Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用curl in GET方法发送数据时出错_Php_Json_Curl_Get_Xgettext - Fatal编程技术网

Php 使用curl in GET方法发送数据时出错

Php 使用curl in GET方法发送数据时出错,php,json,curl,get,xgettext,Php,Json,Curl,Get,Xgettext,我必须通过curl发送json格式的数据,以创建一个新的商户应用程序。我收到了来自支持团队的邮件 curl -D- -X GET -H "Authorization: Basic Y2NhcGlAY2FyZGNvR05hOQ==" -H 'Accept: application/json' -H 'Content-type: application/json' -X PUT 'https://testapi.xyz.com/agentcenter/merchant/create' -d '{"m

我必须通过curl发送json格式的数据,以创建一个新的商户应用程序。我收到了来自支持团队的邮件

curl -D- -X GET -H "Authorization: Basic Y2NhcGlAY2FyZGNvR05hOQ==" -H 'Accept: application/json' -H 'Content-type: application/json' -X PUT 'https://testapi.xyz.com/agentcenter/merchant/create' -d '{"merchant":{"firstName":"mike","lastName":"test","email":"mm@mandm.net","address":"123 test ln","city":"rock hill","state":"PA","zip":"19406","ownerDob":"19871218","ownerSsn":"123-12-1234","phone":"555-555-5555","url":"http:\/\/www.testurl.com","physicalAddress":"1234 ebenezer rd","physicalCity":"rock hill","physicalState":"PA","physicalZip":"19406","application":{"bankRouting":"036001808","bankAccount":"123456789","amexMid":null}}}'.

My line of code is:-

$ch = curl_init('https://testapi.com/merchant/create');

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);

curl_setopt($ch, CURLOPT_TIMEOUT, 5);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

$result = curl_exec($ch);

curl_close($ch);

echo $result;
但我得到了“HTTP状态405-请求方法'GET'不受支持”。


请告诉我我在curl中的错误,因为正如邮件中提到的,我必须使用X GET,而我只使用GET。

不太可能/merchant/create接受GET方法,因为它在请求中说PUT,所以您应该尝试PUT,尽管更明显的选择是尝试POST(并使用PUT进行更新).

我在注释了一些标题后得到了成功响应,请查看注释后的代码

$jsondata = json_encode($postData);

$url =  'url';

  $headers= array('Authorization: Basic ' . base64_encode($username . ":" .              
  $password),'Accept: application/json','Content-Type: application/json');

curl_setopt($curl, CURLOPT_URL, $url);

//curl_setopt($curl, CURLOPT_PUT, true);

curl_setopt($curl, CURLOPT_HEADER, 1);

curl_setopt($curl, CURLOPT_HTTPHEADER,$headers);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');

curl_setopt($curl, CURLOPT_POSTFIELDS,$jsondata);

//curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

//curl_setopt($curl, CURLOPT_USERPWD, base64_encode("$username:$password"));

$result = curl_exec($curl);

print_r($result);

curl_close($curl); 

我尝试了所有的方法,然后也出现了错误。
curl\u setopt($ch,CURLOPT\u POST,1)用于post或
curl_setopt($ch,CURLOPT_PUT,1)用于put,但我使用的是Get方法。我刚刚测试的另一件事是,当我在命令行上执行curl时,它工作正常,但当我使用curl运行时,它显示错误。从响应中可以看出GET不受支持,在curl命令中,在jsonNow之前还有-X PUT,我更新代码如下$ch=curl_init($theurl)。。。curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'PUT');//-X。。。curl_setopt($ch,CURLOPT_PUT,1)。。。echo$response=curl\u exec($ch);死亡但现在我得到的是一片空白。