首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpClient.PostAsync未识别响应

HttpClient.PostAsync未识别响应
EN

Stack Overflow用户
提问于 2016-06-03 15:28:46
回答 1查看 2.4K关注 0票数 4

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

System.Net.Http.HttpRequestException:服务器返回无效或无法识别的响应。在System.Net.Http.CurlResponseHeaderReader.ReadHeader(String& headerName,String& headerValue),在System.Net.Http.CurlHandler.MultiAgent.CurlReceiveHeadersCallback(IntPtr缓冲区,UInt64大小,UInt64 nitems,IntPtr上下文)--在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务中抛出异常的前一个位置的堆栈跟踪-在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务中))

这是发出post调用的代码:

代码语言:javascript
复制
    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 (来源)

curl --标题“内容--类型: text/xml;charset=UTF-8”-标头"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接受-编码: gzip,压缩内容-类型: text/xml;charset=UTF-8 SOAPAction:"http://xxx/xxx/xxx.php/userLogin“内容-长度: 488主机: xxx连接:使用户保持活动-代理:Apache/4.1.1(Java1.5)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-07 11:11:47

伙计们,多亏了GitHub上的DNX团队,我才解决了这个问题。我已经创建了一个线程来说明这个链接上的问题。

这就是我所做的:

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

root@su soaptest# curl -I http://application.com/api/service.php HTTP/1.1 200确定日期: Tue,2016年6月7日01:21:20 GMT服务器: Apache/2.4.6 (CentOS) X驱动-By: PHP/5.4.16访问-控制-标头: SOAPAction,类型访问-控制-允许-源:*访问-控制-允许-方法: POST,GET,选项连接:关闭内容-类型: text/html;charset=utf-8

问题是在我的主PHP页面(我的例子service.php)中找到了(:)上的空白。

访问-控制-允许-方法: POST,GET,选项

应:

访问-控制-允许-方法: POST,GET,选项

另外,(您可以查看上面链接上的整个问题),如果您在Windows机器上运行应用程序,它仍然正确地读取标头(不管有没有空格)。他们现在制造了一个问题,所以这在linux机器上也是可能的。

谢谢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37618243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档