Troubleshooting of curl errors: Difference between revisions
(How to rseolve cURL returns binary data instead of html or json) |
(+ How to resolve the downloaded file was empty) |
||
Line 56: | Line 56: | ||
* [https://stackoverflow.com/questions/28283822/curl-returns-binary-data-instead-of-html php - cURL returns binary data instead of html - Stack Overflow] | * [https://stackoverflow.com/questions/28283822/curl-returns-binary-data-instead-of-html php - cURL returns binary data instead of html - Stack Overflow] | ||
* [https://errerrors.blogspot.com/2020/06/resolve-curl-returns-binary-data-instead-of-html-or-json.html 解決 cUrl 下載的網頁或 JSON 看起來像是亂碼的問題] | * [https://errerrors.blogspot.com/2020/06/resolve-curl-returns-binary-data-instead-of-html-or-json.html 解決 cUrl 下載的網頁或 JSON 看起來像是亂碼的問題] | ||
== How to resolve the downloaded file was empty == | |||
Error condition | |||
* When I executed the Curl command {{kbd | key=<nowiki>curl -O https://path/to/plain_text.txt</nowiki>}}, but the downloaded file was empty. | |||
Solution | |||
* After I enabled [https://ec.haxx.se/usingcurl/usingcurl-verbose verbose] option, I found the HTTP status code {{kbd | key=HTTP/1.1 302 Moved Temporarily}}. I added the location ([https://curl.haxx.se/docs/manpage.html#-L -L]) parameter to resolve the downloaded file was empty: {{kbd | key=<nowiki>curl -L -O https://path/to/plain_text.txt</nowiki>}}, | |||
<pre> | |||
The truncated result after executed the command: curl -v -O https://path/to/plain_text.txt | |||
< HTTP/1.1 302 Moved Temporarily | |||
< Server: nginx | |||
< Date: Tue, 25 Aug 2020 03:45:13 GMT | |||
< Content-Type: text/html | |||
< Transfer-Encoding: chunked | |||
< Connection: keep-alive | |||
< Keep-Alive: timeout=60 | |||
< Location: /path/to/plain_text.txt | |||
</pre> | |||
== References == | == References == |
Revision as of 12:13, 25 August 2020
cUrl "is used in command lines or scripts to transfer data."[1] (alternative library to achive sampe purpose: (1) PHP naive Client URL Library (2) cURL class for PHP (3) Installing cURL on Cygwin on Windows)
How to resolve cUrl error (#5): Unsupported proxy syntax
Condition: the username of socks5 proxy contains @ symbol such as [email protected]
curl_setopt($ch, CURLOPT_PROXY, 'socks5://username:password@localhost:12345'); // result is ok curl_setopt($ch, CURLOPT_PROXY, 'socks5://[email protected]:password@localhost:12345'); // met cUrl error (#5): Unsupported proxy syntax
Solution: Escape the special symbol[1] using URL Encode and Decode - Online or urlencode function
curl_setopt($ch, CURLOPT_PROXY, 'socks5://bob%40email.com:password@localhost:12345'); // result is ok
How to resolve cUrl error (#56): OpenSSL SSL_read: No error.
Condition: The curl vesion 7.67.0 on windows met problem. Result of curl_version returned:
version: Array ( [version_number] => 475904 [age] => 5 [features] => 2953117 [ssl_version_number] => 0 [version] => 7.67.0 [host] => x86_64-pc-win32 [ssl_version] => OpenSSL/1.1.1d [libz_version] => 1.2.11 )
Solution: Use other version of curl command or curl on Cygwin or cURL class for PHP.
Related articles
How to resolve Error 405 Method Not Allowed
When I tried to crawl the web resource but met the error message: "Error 405 Method Not Allowed"
Solution: Make sure using the correct HTTP request method[2] e.g. GET or POST to access the web resource.
How to resolve Error 415 Unsupported Media Type
When I tried to POST JSON (as payload) but met the error message: "Error 415 Unsupported Media Type"
Solution: Set the cUrl with the header Content-Type: application/json[3] Example syntax of cUrl command as following:
curl -X POST --header "Content-Type: application/json" --data '{"user" : "your_user_name", "token" : "your_token"}' "https://example.com/"
How to rseolve cURL returns binary data instead of html or json
How to resolve the downloaded file was empty
Error condition
- When I executed the Curl command curl -O https://path/to/plain_text.txt, but the downloaded file was empty.
Solution
- After I enabled verbose option, I found the HTTP status code HTTP/1.1 302 Moved Temporarily. I added the location (-L) parameter to resolve the downloaded file was empty: curl -L -O https://path/to/plain_text.txt,
The truncated result after executed the command: curl -v -O https://path/to/plain_text.txt < HTTP/1.1 302 Moved Temporarily < Server: nginx < Date: Tue, 25 Aug 2020 03:45:13 GMT < Content-Type: text/html < Transfer-Encoding: chunked < Connection: keep-alive < Keep-Alive: timeout=60 < Location: /path/to/plain_text.txt
References
Troubleshooting of ...
- PHP, cUrl, Python, selenium, HTTP status code errors
- Database: SQL syntax debug, MySQL errors, MySQLTuner errors or PostgreSQL errors
- HTML/Javascript: Troubleshooting of javascript, XPath
- Software: Mediawiki, Docker, FTP problems, online conference software
- Test connectivity for the web service, Web Ping, Network problem, Web user behavior, Web scrape troubleshooting
Template