如何将Postman中正常调用的Java WebService请求导出为curl命令用于PHP
如何从Postman导出curl命令并转换为PHP cURL代码
当然可以!Postman本身就自带导出curl命令的功能,而且转换为PHP cURL代码也很简单,我给你一步步讲:
第一步:从Postman导出curl命令
- 打开你那个已经测试成功的POST请求
- 找到右上角的「代码」按钮(就是那个尖括号
</>的图标),点击它 - 在弹出的代码生成窗口里,左侧列表选择「cURL」,右边就会自动生成对应的curl命令,直接复制下来就行
第二步:把curl命令转换成PHP cURL代码
你可以选择手动转换,或者用一些在线工具(不过手动转换更可控,避免踩坑)。举个例子,假设你导出的curl命令是这样的:
curl --location 'https://your-webservice-url.com/soap-endpoint' \ --header 'Content-Type: text/xml; charset=utf-8' \ --header 'SOAPAction: "http://your-service-namespace/insertRecord"' \ --data-raw '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:your="http://your-service-namespace/"> <soapenv:Header/> <soapenv:Body> <your:insertRecord> <your:id>123</your:id> <your:name>Test</your:name> </your:insertRecord> </soapenv:Body> </soapenv:Envelope>'
对应的PHP cURL代码可以写成这样:
<?php // 初始化cURL会话 $curl = curl_init(); // 设置核心请求参数 curl_setopt_array($curl, [ CURLOPT_URL => 'https://your-webservice-url.com/soap-endpoint', CURLOPT_RETURNTRANSFER => true, // 让cURL返回响应内容而不是直接输出 CURLOPT_ENCODING => '', // 启用所有支持的编码格式 CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', // 指定POST请求 // 设置请求体(和Postman里的raw数据完全一致) CURLOPT_POSTFIELDS => '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:your="http://your-service-namespace/"> <soapenv:Header/> <soapenv:Body> <your:insertRecord> <your:id>123</your:id> <your:name>Test</your:name> </your:insertRecord> </soapenv:Body> </soapenv:Envelope>', // 设置请求头(对应Postman里的Headers) CURLOPT_HTTPHEADER => [ 'Content-Type: text/xml; charset=utf-8', 'SOAPAction: "http://your-service-namespace/insertRecord"' ], ]); // 执行请求并获取响应 $response = curl_exec($curl); // 检查请求是否出错 $err = curl_error($curl); // 关闭会话 curl_close($curl); // 处理结果 if ($err) { echo "cURL Error #:" . $err; } else { // 这里可以根据需要解析XML响应,比如用SimpleXML或者DOMDocument echo $response; } ?>
几个需要注意的点:
- 确保你的PHP服务器已经启用了cURL扩展,可以通过
phpinfo()查看是否有cURL相关的信息 - 如果是HTTPS请求,遇到证书验证失败的问题,临时可以加
CURLOPT_SSL_VERIFYPEER => false和CURLOPT_SSL_VERIFYHOST => false,但生产环境一定要换成合法的CA证书配置,不要一直用这个选项 - 请求体的XML结构、命名空间、SOAPAction头一定要和Postman里的完全一致,不然可能会被WebService拒绝
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

