简体   繁体   English

删除调用 curl 返回 400

[英]Delete call curl returns 400

I am debugging why am I getting 400 response every time from the Laravel server.我正在调试为什么每次都从 Laravel 服务器收到 400 响应。

When I am calling using Postman, everything works fine, but when I call from my curl script it returns 400 everytime.当我使用 Postman 调用时,一切正常,但是当我从 curl 脚本调用时,它每次都返回 400。

My curl code looks like this:我的 curl 代码如下所示:

        $endpoint = "http://sup.l/api/iasku/IA00000001-My Beat-29999-H?";
        $additional_headers = "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zdXAubG9jYWxcL2FwaVwvbG9naW4iLCJpYXQiOjE2MDE2MjI2MDQsImV4cCI6MTYwMTcwOTAwNCwibmJmIjoxNjAxNjIyNjA0LCJqdGkiOiJITFAyUEhWeEdQU1J0NWFQIiwic3ViIjoxLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.3t15l573A_EHotUq6Ud3fcGegXZh1tGsMf3i9BlrVWU";

        $headers = array_merge([
            'Content-Type: application/json',
            'Accept: application/json',
        ], $additional_headers );
        
        $options = [
            CURLOPT_URL            => $endpoint,
            CURLOPT_CUSTOMREQUEST  => 'DELETE',
            CURLOPT_RETURNTRANSFER => 1,     // return web page
            CURLOPT_HEADER         => 0,    // don't return headers
            CURLOPT_FOLLOWLOCATION => 1,     // follow redirects
            CURLOPT_ENCODING       => "",       // handle all encodings
            CURLOPT_USERAGENT      => "myuser.agent", // who am i
            CURLOPT_AUTOREFERER    => 1,     // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
            CURLOPT_TIMEOUT        => 120,      // timeout on response
            CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
            CURLOPT_SSL_VERIFYPEER => 0,     // Disabled SSL Cert checks,
            CURLOPT_SSL_VERIFYHOST => 0,
            CURLOPT_HTTPHEADER     => $headers,
        ];

        if (count($body)) {
            $options['CURLOPT_POSTFIELDS'] = json_encode($body);
        }

        $ch = curl_init(); 
        curl_setopt_array( $ch, $options );

        $content = curl_exec( $ch );

My curl command looks like this (works fine):我的 curl 命令看起来像这样(工作正常):

curl --request DELETE \
  --url http://sup.l/api/iasku/IA00000001-My%20Beat-29999-H? \
  --header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zdXAubG9jYWxcL2FwaVwvbG9naW4iLCJpYXQiOjE2MDE2MjI2MDQsImV4cCI6MTYwMTcwOTAwNCwibmJmIjoxNjAxNjIyNjA0LCJqdGkiOiJITFAyUEhWeEdQU1J0NWFQIiwic3ViIjoxLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.3t15l573A_EHotUq6Ud3fcGegXZh1tGsMf3i9BlrVWU'

Can anyone see what is the problem here?任何人都可以看到这里有什么问题吗? And how should I debug this?我应该如何调试它?

The problem here was that my URL had spaces, so the server couldn't process it.这里的问题是我的 URL 有空格,所以服务器无法处理它。

Once I added rawurlencode for this part of URL IA00000001-My Beat-29999-H?一旦我为 URL 的这一部分添加了rawurlencode IA00000001-My Beat-29999-H? it started working as expected.它开始按预期工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM