まず、私はPostManツールにスクリプトを投稿しようとします。なぜpython要求は動作していますが、C#要求は機能していませんか?
{"AO":"ECHO"}
正常に動作します。それから私はC#でこの要求を書いていますが、うまくいきません。 さらに、私はPythonでリクエストを書きました。うまくいきました。 私のプロジェクトはMicrosoft C#です。私はスクリプトのPythonをC#で実行したくない。
==== Pythonの=========
import httplib
import json
import sys
data = '{"AO":"ECHO"}'
headers = {"Content-Type": "application/json", "Connection": "Keep-Alive" }
conn = httplib.HTTPConnection("http://10.10.10.1",1040)
conn.request("POST", "/guardian", data, headers)
response = conn.getresponse()
print response.status, response.reason
print response.msg
==== C#の============
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://10.10.10.1:1040/guardian");
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/json";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{\"AO\":\"ECHO\"}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
}
I "ContentLength"を入れようとするが、それでもタイムアウト例外が発生する。 私はRestSharpを使用しようとしましたが、タイムアウトではなくnullを返します。 いずれか、私はそれがpythonで細かい作業を、なぜ理解しない 、私を助けてください...
var client = new RestClient("http://10.10.10.1:1040/guardian");
var request = new RestRequest();
request.Method = Method.POST;
request.AddHeader("Content-Type", "application/json");
request.Parameters.Clear();
request.RequestFormat = DataFormat.Json;
request.AddBody(new { AO = "ECHO" });
var response = client.Execute(request);
var content = response.Content;
を助けてください。 しかし、なぜそれがC#で動作していません。 C#で多くのリクエストを見つけようとしましたが、タイムアウトでエラー例外が発生しました。
[ここ](http://stackoverflow.com/questions/1789627/how-to-change-the-timeout-on-a-net-webclient-object)このような類似した問題ですか? – shanmugharaj
親愛なる@Shankfk、 私の問題と同じものはありません。 私のネットワークサーバーでテストしています。これを実行するにはわずか3秒かかります。 そして、上のようにpythonスクリプトでうまく動作します。 しかし、C#ではそれはまったく動作しません、エラー例外タイムアウトを返します。 しかし私はタイムアウトを変更しようとします。 –
PythonとC#は同じエンコーディングを使用しますか? –