Я искал в Интернете, но не смог найти ответ на этот вопрос. Поэтому отправляйте его здесь.Curl CURLOPT_UPLOAD И CURLOPT_FOLLOWLOCATION не работают вместе (libcurl)
В моем коде, я отправляю двоичный поток к серверу, используя CURLOPT_UPLOAD значения ИСТИНЫ (запрос PUT) и настройку CURLOPT_READFUNCTION и CURLOPT_READDATA и CURLOPT_INFILESIZE_LARGE подходящего для передачи потока.
URL-адрес конечной точки, недавно перешедший на 301, постоянно перемещается. Я не хочу менять код, чтобы читать 301 и перенаправлять соответственно, потому что это похоже на интуитивный счетчик.
Видел, что CURLOPT_FOLLOWLOCATION информирует завиток для автоматической перенаправления. Но это не перенаправление, как ожидалось. Я вижу ссылку на POST + FOLLOWLOCATION, но не PUT + FOLLOWLOCATION, когда я googled.
Так что мой вопрос. Предполагается ли, что FOLLOWLOCATION будет работать с PUT в libcurl? Также, если нет, можете ли вы рассказать мне, какие существуют альтернативы для автоматического перенаправления?
Вы пытались просто заменить 'curl_setopt ($ curl, CURLOPT_PUT, true)' с 'curl_setopt ($ curl, CURLOPT_CUSTOMREQUEST," PUT ")' keep 'FOLLOWLOCATION', как вы бы сделали с' POST'? –
Попробуем это и посмотрим. – Swtsvn
Я не использовал CURLOPT_PUT. Вместо этого он полагался на CURLOPT_UPLOAD, чтобы поместить двоичный поток, который работал нормально до перенаправления. В любом случае я добавил эти два. Но все же не перенаправляется автоматически. Все еще видя только ответ 301 в качестве окончательного кода ответа в отладке curl. => curl_easy_setopt (CurlHandle, CURLOPT_CUSTOMREQUEST, "PUT"); и \t \t curl_easy_setopt (CurlHandle, CURLOPT_FOLLOWLOCATION, 1); – Swtsvn