当前位置: 首页 > 面试题库 >

OAuth,PHP,Rest API和curl发出400错误请求

经兴安
2023-03-14
问题内容

我们使用了带有OAuth 1.0 的car2go Rest-
API
的几个应用程序。

我们所有的网络应用都在2天前停止工作。curl POST现在,所有请求都失败,并显示以下错误:

400 Bad Request
Your browser sent a request that this server could not understand.
Error code: 53
Parser Error: [Content-Length: -]

我花费大量时间试图找出问题是否出在我的oauth工作流程上。但是最后所有参数,签名和内容都是正确的。我成功地POST通过via
邮递员(REST客户端)

所以我的结论是,curl的php代码突然不再起作用了。

这是(非常难看)卷曲功能。与大多数有关curl
POST的教程不同的是,我传递的是已附加所有参数的完整URL,因此我不需要CURLOPT_POSTFIELDS

function curlAPI($params) {

    //open connection
    $ch = curl_init();

    $url = $params['url'];


    curl_setopt($ch,CURLOPT_HEADER,false);

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL,$url);


    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
    curl_setopt($ch, CURLOPT_MAXREDIRS,50);

    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 5000);

    if($params['type'] == 'POST') {
        // POST
        curl_setopt($ch,CURLOPT_POST, true);
    } else if($params['type'] == 'DELETE') {
        // DELETE
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
    } else if($params['type'] == 'PUT') {
        $update_json = array();
        // PUT
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_setopt($ch, CURLOPT_POSTFIELDS,'');
    } else {
        // GET
        curl_setopt($ch,CURLOPT_POST,0);
    }


    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    //execute post
    $result['result'] = curl_exec($ch);

    // debug
    if (FALSE === $result['result']) {
        $result['errorInfo'] = curl_error($ch).' - '.curl_errno($ch);
    }

    $reponseInfo = array();

    $reponseInfo['info'] = curl_getinfo($ch);
    $reponseInfo['error'] = curl_error($ch);

    //close connection
    curl_close($ch);


    $result['reponseInfo'] = $reponseInfo;
    return json_encode($result);

}

问题答案:

好的,这是解决此噩梦的方法:

curl_setopt($ch,CURLOPT_HTTPHEADER ,array('Content-Length: 0'));

另外,发送POST没有标题的curl 也不行。



 类似资料:
  • 我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!

  • 问题内容: 我只是使用a 从这样的用户那里获取最新的tweet: 这在我的本地主机上运行良好,但是当我将其上传到服务器时会引发以下错误: 警告: file_get_contents(http://api.twitter.com/1/statuses/user_timeline/User.json)[function.file- get-contents]:无法打开流:HTTP请求失败!HTTP /

  • 我在沙箱中工作,使用PayPal REST。net SDK方法支付。创建一个信用卡对象。当所有参数有效且使用来自的测试CC编号时https://developer.paypal.com/webapps/developer/docs/integration/direct/accept-credit-cards/,付款对象从该方法返回,一切正常。 但是,当参数无效时,例如过去的过期日期或沙箱无法识别的

  • 我正在为一个项目使用Hackerrank API。查看官方文档,点击这里! 在他们的网站上有一个使用UNIREST的例子, 由于我使用的是axios,所以我将其转换为类似的axios代码,如下所示: 我希望这只适用于示例中所示的示例,但它给我带来了以下错误: 请求失败,状态代码为400 错误:请求失败,状态代码为400 在createError(createError.js:16) 在sett(s

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示: