2

このコードは期待どおりに機能することがわかりました。

var url = "https://limal.info/efulfilment.php";
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var alternativeAnswer = Encoding.UTF8.GetString(new WebClient().UploadValues(url, new NameValueCollection() { { "xml", "test" } }));

ただし、次のコードは頭痛の種になります。

var url = "https://limal.info/efulfilment.php";
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Timeout = 5000; // I added this for you, so you only need to wait 5 sec...

using (var requestStream = request.GetRequestStream())
{
    var writer = new StreamWriter(requestStream);
    writer.Write("xml=test");
}
using (var response = request.GetResponse())
{
    using (var responseStream = response.GetResponseStream())
    {
        var reader = new StreamReader(responseStream);
        var answer = reader.ReadToEnd();
    }
}

どういうわけか投稿パラメーターが認識されず、応答が返されます。

"limal.info bridge error: Missing 'xml' variable in post request."

(正しい答えは、テストが無効な XML であるため、XML データの形式が間違っているということです...)

次の問題に進みます。

別の URL を使用すると、タイムアウト例外が発生します。次のコードのUploadValuesでハングします。(HttpWebRequest を使用する他の例は、私も試した GetResponseハングします。)

var url = "https://sys.efulfilment.de/rt/";
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
var alternativeAnswer = Encoding.UTF8.GetString(new WebClient().UploadValues(url, new NameValueCollection() { { "xml", "test" } }));

ここや他のサイトで同様の問題について読みました。SSL で Http POST を使用すると、.NET で問題が発生するようです。

どうして??:(

4

0 に答える 0