6

C# を使用して HTTPS POST リクエストを作成しています (HTTP と同じ問題)。

byte[] byteArray = Encoding.UTF8.GetBytes("var1=blah&var2=hah");
HttpWebRequest request = (HttpWebRequest)(WebRequest.Create("https://www.example.com"));
request.Credentials = CredentialCache.DefaultCredentials;
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
request.Method = "POST";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();

上記のコードは、プロキシを経由する必要がない場合、.NET と Mono の両方でうまく機能します。プロキシを使用する必要がある場合、.NET で実行すると機能しますが、Mono では次のように失敗します。

WebException: Error: NameResolutionFailure
    at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
    at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename unknown>:0

また、同じプロキシ構成のブラウザで実行しても問題なく動作します。.NET がスローしないのに Mono が NameResolutionFailure をスローする理由は何ですか?

リクエストを作成してからドメインをリクエストに追加するときに直接IPを使用するという回避策を持つ同様のstackoverflowの質問がありました.Host. ただし、通過する必要があるプロキシは、この種の要求を拒否します。ヘルプ!

オペレーティング システムは Windows 7、Mono バージョンは 2.6.5

4

1 に答える 1

1

ヒント: まず、携帯電話で Web ブラウジングを確認してください。同じ状況になる場合は、心配する必要があります。私は同じ状況にあり、エミュレーターがネットへのアクセス許可を持っていないときに常に発生しました。通常のデバイスで試してください。

于 2015-10-21T20:27:18.930 に答える