Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#WebRequest(Http POST over SSL)在GetResponse()处挂起,但不同的URL可以工作。请求中也有错误的POST参数_C#_Post_Ssl_Timeout_Httprequest - Fatal编程技术网

C#WebRequest(Http POST over SSL)在GetResponse()处挂起,但不同的URL可以工作。请求中也有错误的POST参数

C#WebRequest(Http POST over SSL)在GetResponse()处挂起,但不同的URL可以工作。请求中也有错误的POST参数,c#,post,ssl,timeout,httprequest,C#,Post,Ssl,Timeout,Httprequest,我发现此代码按预期工作: var url = "https://limal.info/efulfilment.php"; ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; var alternativeAnswer = Encoding.UTF8.GetString(new WebClient().UploadValues(url, new NameValueCollectio

我发现此代码按预期工作:

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();
    }
}
不知怎的,post参数没有被识别,我得到了响应:

"limal.info bridge error: Missing 'xml' variable in post request."
(正确的答案是XML数据格式错误,因为测试是无效的XML…)

现在转到下一个问题:

当我使用不同的url时,会发生超时异常。在下面的代码中,它在上载值时挂起。(另一个使用HttpWebRequest的示例挂起在GetResponse,我也尝试过)

我在其他网站上看到了类似的问题。在.NET中,使用Http POST和SSL似乎是一个问题


为什么??:(

问题1已解决:我回显了HTTP请求,发现它是空的。看起来,StreamWriter只有在刷新它时才真正写入。writer.Write(“xml=test”);writer.flush();关于问题1。StreamWriter也应该在using块中创建,这将导致刷新。它也将关闭流;但可能只是将Stream using块留在代码中以便于可读。问题2在此处得到解决:问题1已解决:我回显了HTTP请求,并看到它是空的。看起来,StreamWriter只执行lly在刷新时写入。writer.Write(“xml=test”);writer.flush();问题1。StreamWriter也应在using块中创建,这将导致刷新。它也将关闭流;但可能只是将Stream using块保留在代码中以便于可读。问题2在这里得到解决:
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" } }));