22

私がしなければならないことは、JSONデータを指定されたURLに投稿する必要があることです。JSONは次のようになります。

{
    "trip_title":"My Hotel Booking",
    "traveler_info":{
        "first_name":"Edward",
        "middle_name":"",
        "last_name":"Cullen",
        "phone":{
            "country_code":"1",
            "area_code":"425",
            "number":"6795089"
        },
        "email":"asdv@gmail.com"
    },
    "billing_info":{
        "credit_card":{
            "card_number":"47135821",
            "card_type":"Visa",
            "card_security_code":"123",
            "expiration_month":"09",
            "expiration_year":"2017"
        },
        "first_name":"Edward",
        "last_name":"Cullen",
        "billing_address":{
            "street1":"Expedia Inc",
            "street2":"108th Ave NE",
            "suite":"333",
            "city":"Bellevue",
            "state":"WA",
            "country":"USA",
            "zipcode":"98004"
        },
        "phone":{
            "country_code":"1",
            "area_code":"425",
            "number":"782"
        }
    },
    "marketing_code":""
}

そして私の機能

string message = "URL";
_body="JSON DATA";
HttpWebRequest request = HttpWebRequest.Create(message) as HttpWebRequest;
if (!string.IsNullOrEmpty(_body))
{
    request.ContentType =  "text/json";
    request.Method =  "POST";

    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        streamWriter.Write(_body);
        streamWriter.Flush();
        streamWriter.Close();
    }
}

using (HttpWebResponse webresponse = request.GetResponse() as HttpWebResponse)
{
    using (StreamReader reader = new StreamReader(webresponse.GetResponseStream()))
    {
        string response = reader.ReadToEnd();
    }
}

そして、私がそれを投稿しているとき。エラーが発生します

「リモートサーバーがエラーを返しました:(415)サポートされていないメディアタイプ。」

誰もがそれについて考えています。どこを間違えているの?

4

7 に答える 7

28

これを試して:

request.ContentType =  "application/json"
于 2012-10-30T13:44:28.493 に答える
1

プロジェクトの名前を変更し、すべての名前空間を関連付けて更新した後、まったく同じメッセージが表示されました。web.config の名前空間 (名前とコントラクト) を更新していないことに気付きました。

<system.serviceModel>
  <services>
    <service name="X.Y.Z.Authentication" behaviorConfiguration="ServiceBehaviour">
      <endpoint address="" binding="webHttpBinding" contract="X.Y.Z.IAuthentication" behaviorConfiguration="web" bindingConfiguration="defaultRestJsonp"></endpoint>
    </service>
  </...>
</..>

これがこれを読んでいる人に役立つことを願っています。

于 2014-01-06T13:40:06.513 に答える
0

100% 確実ではありませんが、テキストを byteArray として送信する必要があると思います。これを試してください:

req = (HttpWebRequest)HttpWebRequest.Create(uri);
        req.CookieContainer = cookieContainer;
        req.Method = "POST";
        req.ContentType = "text/json";
        byte[] byteArray2 = Encoding.ASCII.GetBytes(body);
        req.ContentLength = byteArray2.Length;
        Stream newStream = req.GetRequestStream();
        newStream.Write(byteArray2, 0, byteArray2.Length);
        newStream.Close();
于 2012-10-30T13:50:05.627 に答える