php - PHP Curl POST 请求不起作用,但在 POSTMAN 中工作正常
问题描述
从 sub pos 系统向主系统发送发票详细信息。Web 浏览器中的任何响应都没有错误。从https://example.com发送的请求。但是相同的代码在邮递员中工作正常。邮递员给出成功响应。
php中的代码
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'urlhere',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"key":"asdasdsad",
"shopId":99999,
"SHOP_ID": "DUF SHOP",
"SHOP_NAME": "DUFF SUB",
"INVOICE_NUMBER": "26/111",
"TRANSACTION_DATE": "2020-08-25 7:31:20",
"TRANSACTION_TIME": "7:31:20",
"TOTAL_AMOUNT_BEFORE_DISCOUNT": 150.00,
"DISCOUNT_AMOUNT": 50.00,
"DISCOUNT_TYPE": "NO",
"TOTAL_AMOUNT_AFTER_DISCOUNT": 100.00,
"productDetails":[
{
"INVOICE_NUMBER":"5210/D",
"PRODUCT_NAME": "PRODUCT",
"PRODUCT_CATEGORY": "cat",
"PRODUCT_SUB_CATEGORY": "subCat",
"BRAND_NAME": "Brand",
"QUANTITY":100,
"UNIT_PRICE": 250.00
}],
"currencyDetail":[
{
"INVOICE_NUMBER":"1",
"PAYMENT_METHOD": "CASH",
"CURRENCY": "USD",
"ACTUAL_PAYMENT_CURRENCY_TYPE":"USD",
"amount":250.00
}
]
}
',
CURLOPT_HTTPHEADER => array(
'Content-Type: text/plain'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
解决方案
我有时会使用这个网站https://incarnate.github.io/curl-to-php/ 。否则你可以切换到 json 也许。这个例子对我有用。
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($handle, CURLOPT_POST, 1);
curl_setopt($handle, CURLOPT_POSTFIELDS, "{\"text\": \"$newText\" , \"model_id\":\"en-fr\"}");
curl_setopt($handle, CURLOPT_USERPWD, 'apikey' . ':' . $_ENV['API_KEY_TRANSLATE']);
$headers[] = 'Content-Type: application/json';
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($handle);
$responseDecoded = json_decode($response, true);
$responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
curl_close($handle);
推荐阅读
- c# - 如何获取Channel中的元素个数
? - javascript - 使用电话号码登录时令牌无效
- java - 使用 invalidate() 只添加一次贴纸
- c# - Parallel.ForEach 未按预期在 C# 的 ConcurrentBag 中添加项目
- javascript - JS 速记返回第一个未定义的值
- ssh - 如何使用 Gitlab-ci 通过本地 Gitlab 运行器 SSH 到本地服务器?
- c++ - 如何解决错误:SCIP C++ 中的无效 SCIP 阶段 <10>
- javascript - 如何用Javascript替换钱“xxx”
- laravel - MethodNotAllowedHttpException 状态代码 405
- reactjs - 反应显示获取的数据问题