Postman SOAP 请求有效,但 CURL 无效

Posted

技术标签:

【中文标题】Postman SOAP 请求有效,但 CURL 无效【英文标题】:Postman SOAP request works, but CURL doesn't 【发布时间】:2018-10-27 17:38:04 【问题描述】:

我正在尝试通过 php 实现 AAA Cooper Freight 的 SOAP API。 当我通过 Postman 向 http://wsportal.aaacooper.com:8188/wsportal20/wsGenEst 发送 XML 请求时,它工作正常,但使用 CURL 时,它不返回任何内容

我使用直接 url(来自 wsdl 文件),因为他们的 WSDL 文件似乎已损坏并且无法使用: http://wsportal.aaacooper.com:8188/wsGenRateEstimate.wsdl

这是 Postman 的截图(正在工作!) 和我的 php 代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,            "http://wsportal.aaacooper.com:8188/wsportal20/wsGenEst" );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST,           1 );
curl_setopt($ch, CURLOPT_POSTFIELDS,     $input_xml ); 
curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=ISO-8859-1')); 
$data = curl_exec($ch);
print_r($data);
curl_close($ch);

我在两个地方都使用相同的 XML 字符串。

【问题讨论】:

2 件事,将您遇到的错误添加到 OP,“不起作用”不是一个好的描述:p。 2) 在邮递员上,您发送一个带有 UTF-8 编码的 XML,但在 curl 中 Content -type 标头显示 charset=ISO-8859-1。服务器可能会或可能不会忽略这一点,因此它可能会中断请求。 【参考方案1】:

Postman 可以使用屏幕右上角的Code 按钮为任何给定请求生成 PHP 代码。此功能的演示如下图所示。

【讨论】:

我复制了代码,但没有显示 cURL Error #:couldn't connect to host 。谢谢你的信息顺便说一句,没有看到那个选项。 好的,可能是防火墙或代理服务器阻止了请求。如果您的网络上有代理,则必须相应地配置 cURL。此外,DNS 或路由问题可能会导致 cURL 请求失败。 问题是,同一个 CURL 可以与另一个 SOAP 服务/wsdl 一起使用

以上是关于Postman SOAP 请求有效,但 CURL 无效的主要内容,如果未能解决你的问题,请参考以下文章

在 curl -k 中请求工作,但不在 Postman 中禁用 SSL

POST 请求在 Postman 中有效,但在 Python 请求中无效(200 响应机器人检测)

Postman-07-导入cURL命令请求

如何将此 curl 请求转换为 Postman 请求

Alamofire 请求失败,因为证书但在 Postman 上工作

如何使用postman来刺激对请求的cURL请求