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 响应机器人检测)