HttpClient POST生成了GET请求

4
缺乏睡眠和长时间盯着代码让我不得不放弃。以下是我的问题:
我想在我的c#表单应用程序中发送一个POST请求,并检索结果。一切都有效,除了传输POST正文:请求为空而不是我的内容,并且,直到很久以后才发现,使用GET REQUEST_METHOD代替。服务器端不应该是问题,当我通过Web表单(HTML)发送请求时,一切正常。
c#:
async Task<string> reqres(string name, string logs)
{
    using (var client = new HttpClient())
    {
        string handler = settings.handler;  // php script on server

        var values = new Dictionary<string, string>();
        values.Add("name", name);
        values.Add("logs", logs);

        var response = await client.PostAsync(hand, new FormUrlEncodedContent(values));
        var contents = response.Content.ReadAsStringAsync().Result;
        return contents;
    }
}

我总是可以从我的服务器得到响应,但服务器总是说它收到了一个 GET 请求。

这是我的服务器输出:

PHP:

Array
    (
        [CONTENT_TYPE] => application/x-www-form-urlencoded
        [DOCUMENT_ROOT] => /path/account/example.com/index
        [GATEWAY_INTERFACE] => CGI/1.1
        [HTTP_CONNECTION] => Keep-Alive
        [HTTP_HOST] => www.example.com
        [PATH] => /bin
        [PHPRC] => /etc/php5.3/cgi/example.com
        [QUERY_STRING] => 
        [REDIRECT_STATUS] => 200
        [REMOTE_ADDR] => xx.xxx.xx.xxx
        [REMOTE_PORT] => 60149
        [REQUEST_METHOD] => GET
        [REQUEST_URI] => /path/script.php
        [SCRIPT_FILENAME] => /path/account/directory/index/path/script.php
        [SCRIPT_NAME] => /path/script.php
        [SERVER_ADDR] => xxx.x.xxx.xxx
        [SERVER_ADMIN] => webmaster@example.com
        [SERVER_NAME] => www.example.com
        [SERVER_PORT] => 80
        [SERVER_PROTOCOL] => HTTP/1.1
        [SERVER_SIGNATURE] => Apache/2.2.22 Server at www.example.com Port 80

[SERVER_SOFTWARE] => Apache/2.2.22 [PHP_SELF] => /path/script.php [REQUEST_TIME] => 1463912396 ) </pre><br /> Nope. // $_POST 查询的结果 Array // print_r($_POST); ( )

谁能告诉我出了什么问题?你注意到了什么?这个问题的根源是什么?


1
听起来可能有一个重定向在发生。 - Jonnix
1
@JonStirling 嗯,它显示200,这不意味着目标已经顺利到达了吗? - Ben Philipp
1
不,它在到达200页之前仍然可能发生301/302等情况。 - Jonnix
1
@JonStirling 我非常抱歉......这原来是个愚蠢的重定向:/ - Ben Philipp
1个回答

4

啊啊啊啊啊!该死!

原来它确实是一个重定向...

我被200(OK)骗了,以为问题出在别的地方...JonStirling 友好地提醒我,在此之前可能仍然存在重定向。

果然,在确认我没有被重定向到 !www. -> www. 之后,它作为POST起作用了。

唉... 我真的认为这种情况下的层次结构实现很糟糕。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接