【问题标题】:PHP Curl POST request not working but works fine in POSTMANPHP Curl POST 请求不起作用,但在 POSTMAN 中工作正常
【发布时间】:2023-04-06 16:23:01
【问题描述】:

从 sub pos 系统向主系统发送发票详细信息。 Web 浏览器中的任何响应都没有错误。来自https://example.com 的请求。但是相同的代码在邮递员中工作正常。邮递员给出成功响应。

works fine in postman

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;
?>

【问题讨论】:

  • 小提示:Postman 可以选择为您生成 PHP 代码。在右侧,查找名为“代码”或用&lt;/&gt; 符号表示的选项,然后选择PHP - cURL。然后您可以比较差异。
  • 当你遇到这样的问题时,从debugging你的cURL请求开始,看看服务器实际上说了什么。在不知道服务器响应什么的情况下,您基本上只是在猜测,这是相当欠佳的。
  • @El_Vanja 没有区别。我检查了
  • 不应该 'Content-Type: text/plain''Content-Type: application/json',因为你正在发送 json?
  • @MagnusEriksson 它必须是 Content-Type: text/plain,现在我收到错误无法连接到“domainofmainsystem”端口 8005:连接被拒绝

标签: php json api curl postman


【解决方案1】:

我有时会使用这个网站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);

【讨论】:

    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多