gpt4 book ai didi

c# - HttpClient.PostAsync 无法识别的响应

转载 作者:行者123 更新时间:2023-11-30 16:48:50 28 4
gpt4 key购买 nike

如果我在 Windows 机器上运行我的 Web 应用程序,一切正常。当我在 Linux (CentOS) 机器上运行此应用程序时,尝试发送 Post 请求时出现以下异常:

System.Net.Http.HttpRequestException: The server returned an invalid or unrecognized response. at System.Net.Http.CurlResponseHeaderReader.ReadHeader(String& headerName, String& headerValue) at System.Net.Http.CurlHandler.MultiAgent.CurlReceiveHeadersCallback(IntPtr buffer, UInt64 size, UInt64 nitems, IntPtr context) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

这是调用 post 的代码:

    Uri uri = new Uri(ServiceConfiguration.SERVICE_URL);

string sSOAPResponse = String.Empty;

HttpClient hc = new HttpClient();

hc.DefaultRequestHeaders.Add("SOAPAction", oRequest.Action);

var content = new StringContent(oRequest.RequestMessage, Encoding.UTF8, "text/xml");

try
{
using (HttpResponseMessage response = await hc.PostAsync(uri, content))
{

sSOAPResponse = await response.Content.ReadAsStringAsync();
(...)
}

我猜这是因为我的标题定义而发生的。我还尝试在 linux 控制台上使用 curl 发出请求,我得到了预期的响应。我对 header 定义做错了吗?

成功使用的 CURL 命令示例 ( Source )

curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: ACTION_YOU_WANT_TO_CALL" --data @FILE_NAME URL_OF_THE_SOAP_WEB_SERVICE_ENDPOINT

SOAP 用户界面请求(RAW):

POST http://xxx/xxx/xxx.php HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 SOAPAction: "http://xxx/xxx/xxx.php/userLogin" Content-Length: 488 Host: xxx Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5

最佳答案

好吧,感谢 GitHub 上的 DNX 团队,我已经解决了这个问题。我创建了一个线程来说明关于这个 link 的问题.

这是我所做的:

  • 我在我的 CentOS 服务器上运行了一个 PHP (NuSOAP) API。我发送了这个显示 PHP header 信息的命令。

[root@su soaptest]# curl -I http://application.com/api/service.php

HTTP/1.1 200 OK Date: Tue, 07 Jun 2016 01:21:20 GMT Server:Apache/2.4.6 (CentOS) X-Powered-By: PHP/5.4.16Access-Control-Allow-Headers: SOAPAction,Content-TypeAccess-Control-Allow-Origin: * Access-Control-Allow-Methods :POST,GET,OPTIONS Connection: close Content-Type: text/html;charset=utf-8

问题是在我的主要 PHP API 页面(我的案例 service.php)中找到的 (:) 上的空白

Access-Control-Allow-Methods : POST,GET,OPTIONS

应该是:

Access-Control-Allow-Methods: POST,GET,OPTIONS

显然,(您可以在上面的链接中查看整个问题)如果您在 Windows 机器上运行该应用程序,它仍然可以正确读取 header (有或没有空格)。他们现在创建了一个问题,所以这在 linux 机器上也是可能的。

谢谢。

关于c# - HttpClient.PostAsync 无法识别的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618243/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com