繁体   English   中英

HttpClient.PostAsync无法识别的响应

[英]HttpClient.PostAsync Unrecognized Response

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

System.Net.Http.HttpRequestException:服务器返回无效或无法识别的响应。 System.Net.Http.CurlResponseHeaderReader.ReadHeader(String&headerName,String&headerValue)at System.Net.Http.CurlHandler.MultiAgent.CurlReceiveHeadersCallback(IntPtr buffer,UInt64 size,UInt64 nitems,IntPtr context)---堆栈跟踪结束抛出异常的先前位置---在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处

这是调用后调用的代码:

    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发出请求,我得到了预期的响应。 我是否对标题定义做错了?

CURL命令示例与sucess一起使用( 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 UI请求(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主机:xxx连接:Keep-Alive User-Agent:Apache-HttpClient / 4.1.1(java 1.5)

好吧,我们已经通过GitHub上的DNX团队解决了这个问题。 我正在创建一个帖子,说明此链接上的问题。

这就是我所做的:

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

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

HTTP / 1.1 200 OK日期:星期二,07 Jun 2016 01:21:20 GMT服务器:Apache / 2.4.6(CentOS)X-Powered-By:PHP / 5.4.16访问控制允许标题:SOAPAction,内容-Type Access-Control-Allow-Origin:* Access-Control-Allow-Methods:POST,GET,OPTIONS连接:close Content-Type:text / html; 字符集= utf-8的

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

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

应该:

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

如果你在Windows机器上运行应用程序,它仍然可以正确地读取标题(有或没有空格)。(可以看看上面链接上的整个问题)。 他们现在已经创建了一个问题,所以这也可以在linux机器上实现。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM