35

POSTおよびjson形式を使用してWebサイトとの間でデータを送受信する必要があるC#で小さなツールを作成しています。私はこれまで C# (または実際にはどの言語でも) でこのようなことをしたことがないので、始めるのに役立つ情報を見つけるのに苦労しています。

C# の WebRequest クラスに関する情報をいくつか見つけましたが (具体的にはhereから)、詳しく調べる前に、これが仕事に適したツールであるかどうか疑問に思いました。

データを json 形式に変換するためのツールはたくさんありますが、他にはあまりありません。

4

7 に答える 7

27

WebRequest、より具体的には HttpWebRequest クラスは、達成したいことの出発点として適しています。リクエストを作成するには、WebRequest.Create を使用し、作成したリクエストを HttpWebRequest にキャストして実際に使用します。次に、投稿データを作成し、次のようにストリームに送信します。

HttpWebRequest req = (HttpWebRequest)
WebRequest.Create("http://mysite.com/index.php");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
string postData = "var=value1&var2=value2";
req.ContentLength = postData.Length;

StreamWriter stOut = new
StreamWriter(req.GetRequestStream(),
System.Text.Encoding.ASCII);
stOut.Write(postData);
stOut.Close();

同様に、GetResponse メソッドを使用して応答を読み戻すことができます。これにより、結果の応答ストリームを読み取り、その他必要なことを行うことができます。クラスの詳細については、次の URL を参照してください。

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

于 2008-09-18T09:58:32.547 に答える
19

WebClientは、 WebRequestよりも使いやすい場合があります。あなたはそれを見たいと思うかもしれません。

JSON デシリアライゼーションについては、JavaScriptSerializerクラスを確認する必要があります。

Web クライアントの例:

using (WebClient client = new WebClient ())
{
    //manipulate request headers (optional)
    client.Headers.Add (HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    //execute request and read response as string to console
    using (StreamReader reader = new StreamReader(client.OpenRead(targetUri)))
    {
        string s = reader.ReadToEnd ();
        Console.WriteLine (s);
    }
}

誰かがコードを更新したい場合に備えて wiki としてマーク

于 2008-09-18T09:56:57.107 に答える
1

データを Web サイトに POST する場合は、System.Net.HttpWebRequest (WebRequest の HTTP 固有の実装) が最適なソリューションです。SSL、非同期リクエスト、およびその他の優れた機能をサポートし、MSDN で十分に文書化されています。

ペイロードは何でもかまいません: JSON 形式のデータでもなんでも - ContentType プロパティをサーバーが期待して理解できるもの (ほとんどの場合、application/json、text/json、または text/x-json) に設定する限り、すべてが大丈夫。

システム サービスから HttpWebRequest を使用する場合の潜在的な問題の 1 つ: IE プロキシと資格情報を使用するため、LOCALSYSTEM ユーザー (または基本的に定期的に対話的にログオンしないアカウント) として実行すると、デフォルトの動作が少し奇妙になる場合があります。 )。Proxy および Authentication プロパティをNothing(または、C# の人々が好んで呼び出すようにnull、私が推測するように) に設定することは避けるべきです。

于 2008-09-18T09:58:02.733 に答える
0

WebRequest を使用して Web サイトとやり取りしました。それは正しい「ツール」です

あなたの質問の JSON の側面についてコメントすることはできません。

于 2008-09-18T09:50:45.637 に答える
0

インスタンス オブジェクトから json 形式の文字列に、またはその逆に変換するには、Json.NET を試してください: http://json.codeplex.com/

私は現在それをプロジェクトに使用しています。学習と操作が簡単で、シリアル化とカスタム型コンバーターに関してある程度の柔軟性を提供します。また、json 入力を照会するための LINQ 構文もサポートしています。

于 2010-12-06T04:49:08.253 に答える
0

現在最高評価の回答は役に立ちますが、JSON を送受信しません。

送信と受信の両方に JSON を使用する例を次に示します。

Web サービスに json オブジェクトを投稿する方法

そして、これがこの問題を解決するのに最も役立った StackOverflow の質問です。

ASP.net Web サービスと ASP.Net Web クライアントの間で JSON を送受信する際の問題

そして、ここに別の関連する質問があります:

C# での json 呼び出し

于 2012-05-30T18:00:08.623 に答える
-1

3.5 には組み込みの jsonserializer があります。webrequest は、探している適切なクラスです。

いくつかの例:

于 2008-09-18T09:52:00.923 に答える