web-dev-qa-db-ja.com

C#を使用してAPIへのJSONポストを作成する方法

私は、テキストファイルからテキストを読み取り、JSON形式の文字列(文字列変数に保持)に変換し、POST JSON .NET Framework 4を使用しています。

私の苦労は、C#を使用してリクエストを作成し、レスポンスを取得することです。 必要な基本的なコードは何ですか?コード内のコメントが役立ちます。私がこれまでに得たものは以下のとおりですが、私が正しい軌道に乗っているかどうかはわかりません。

//POST JSON REQUEST TO API
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("POST URL GOES HERE?");

request.Method = "POST";
request.ContentType = "application/json";

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(jsonPOSTString);

request.ContentLength = bytes.Length;

using (Stream requestStream = request.GetRequestStream())
{
    // Send the data.
    requestStream.Write(bytes, 0, bytes.Length);
}

//RESPONSE HERE
15
kyle_13

WebClientクラスを使用してみましたか?

あなたは使用できるはずです

string result = "";
using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "application/json"; 
    result = client.UploadString(url, "POST", json);
}
Console.WriteLine(result);

のドキュメント

http://msdn.Microsoft.com/en-us/library/system.net.webclient%28v=vs.110%29.aspx

http://msdn.Microsoft.com/en-us/library/d0d3595k%28v=vs.110%29.aspx

49
wegrata

Web API HttpClientを使用してみてください

    static async Task RunAsync()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://domain.com/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


            // HTTP POST
            var obj = new MyObject() { Str = "MyString"};
            response = await client.PostAsJsonAsync("POST URL GOES HERE?", obj );
            if (response.IsSuccessStatusCode)
            {
                response.//.. Contains the returned content.
            }
        }
    }

詳細はこちらをご覧ください Web API Clients

3
Amir Katz

あなたのためのMSDNから;

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Console.WriteLine ("Content length is {0}", response.ContentLength);
        Console.WriteLine ("Content type is {0}", response.ContentType);

        // Get the stream associated with the response.
        Stream receiveStream = response.GetResponseStream ();

        // Pipes the stream to a higher level stream reader with the required encoding format. 
        StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);

        Console.WriteLine ("Response stream received.");
        Console.WriteLine (readStream.ReadToEnd ());
        response.Close ();
        readStream.Close ();

ソース: http://msdn.Microsoft.com/en-us/library/system.net.httpwebrequest.getresponse(v = vs.110).aspx

0
Coops