Troubleshooting of curl errors in Mandarin: Difference between revisions

Jump to navigation Jump to search
No edit summary
Line 202: Line 202:
dquote>
dquote>
</pre>
</pre>
== 如何隱藏進度條 ==
執行 curl 命令時,通常會輸出詳細的下載和上傳進度資訊,如下所示:
<pre>
% Total    % Received % Xferd  Average Speed  Time    Time    Time  Current
                                Dload  Upload  Total  Spent    Left  Speed
100 90141  100 90141    0    0  20029      0  0:00:04  0:00:04 --:--:-- 22012
</pre>
要隱藏 curl 命令的進度條,你可以使用 `-s`(silent)選項來隱藏所有輸出,或使用 `-S`(silent with error messages)選項來隱藏進度條但仍顯示錯誤訊息。
<pre>
curl -sS [URL]
</pre>
或者,如果你想隱藏所有輸出包括錯誤訊息,只需使用 `-s`(silent)選項:
```
curl -s [URL]
```
== Windows 與 Mac/Linux 系統的 cURL JSON 傳遞問題 ==
'''1. 問題'''
在 Windows 系統執行 cURL 命令時遇到以下錯誤:
<pre>
Invalid JSON payload received. Unknown name "": Root element must be a message.
</pre>
'''2. 解決方案'''
Windows 系統:
<pre>
curl -X POST -H "Content-Type: application/json" "API_URL" -d "{\"key\":\"value\"}"
</pre>
Mac/Linux 系統:
<pre>
curl -X POST -H "Content-Type: application/json" "API_URL" -d '{"key":"value"}'
</pre>
PHP 程式碼:
<pre>
$is_windows = strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
if ($is_windows) {
    $command = sprintf('-d "{\"key\":\"%s\"}"', $value);
} else {
    $command = sprintf("-d '%s'", $json_payload);
}
</pre>
'''3. 問題說明'''
* 根本原因:Windows 和 Mac/Linux 處理 shell 命令中的引號方式不同
* Windows:需要使用雙引號並轉義內部的引號
* Mac/Linux:可以使用單引號包住完整的 JSON 字串
* 當使用不當的引號格式時,JSON payload 會被錯誤解析,導致 API 回傳格式錯誤的訊息


== 延伸閱讀 ==
== 延伸閱讀 ==

Navigation menu