我想通过CURL获取GET请求的响应,但是获取错误“HTTP / 1.1 405 Method Not Allowed”并且不返回任何内容(标题除外)。 以下是我的代码。
$url = "http://api.example.com/Q5PLCmwYzho=/7avEU7ptYyummfheg9!0KA==?aqPI=93566&aqIIO=false&aqIP=false&aqSK=0&aqTK=14&aqSO=date&aqCI=0"
$options = array(
CURLOPT_URL => $url,
CURLOPT_HTTPGET => true, //set request type post or get
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => true,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36',
CURLOPT_HTTPHEADER => array(
'Accept: application/json, text/javascript, */*; q=0.01',
'Accept-Encoding: gzip, deflate, sdch',
//'Content-Type: application/json; charset=utf-8',
//'Access-Control-Allow-Origin: http://localhost:14189',
//'Origin: http://www.example.com',
//'Host: api.example.com',
//'Access-Control-Allow-Credentials: true',
),
CURLOPT_COOKIE => 'Cookie:scarab.profile=%2293566%7C1465411024%22; scarab.mayAdd=%5B%7B%22i%22%3A%2293566%22%7D%2C%7B%22i%22%3A%22117313%22%7D%5D; _ceg.s=o8gwtw; _ceg.u=o8gwtw; _gat=1; _dc_gtm_UA-13212406-1=1; DK-Client=CWUU,09b6ab76-f662-48b3-a1e6-f08779519236; __auc=764bbe2e155314db7ac1a950571; scarab.visitor=%22566B1DCD74FCD3A5%22; _ga=GA1.2.412464545.1465411024'
);
$ch = curl_init();
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err; //no error!
$header['errmsg'] = $errmsg;
$header['content'] = json_decode($content); // no content!
echo $response['http_code']; //output: 405
我在网页中检查了相应的ajax请求,并且每个curl选项似乎都设置正确。细节(从chrome Dev工具捕获)显示在图像中。 ![1]:http://i.stack.imgur.com/XW8k1.png
我错过了什么?我搜索了很多,但无法解决问题!我知道这个错误的原因之一是使用未经授权的curl请求方法,但相应的AJAX调用使用GET方法并获得结果。
有什么问题?任何帮助将不胜感激。
更新:我写了一个AJAX请求来获取本地服务器(localhost)中的数据,并收到此错误:“Cross-Origin Request Blocked”。这意味着我无法从localhost向其他域(api.example.com)发出请求。是否有任何变通方法或黑客来从该服务器获取响应内容?
答案 0 :(得分:0)
我在Postman中遇到此错误。就我而言,这是因为我本应该使用POST时正在使用GET。我也使用GET参数而不是POST参数。检查正确的方法(在我的Java代码中指定)并使用邮递员中的“代码”按钮显示curl CLI可以帮助我。
答案 1 :(得分:-1)