我正在開發一個 Android 應用程式(客戶端)。服務器使用 C#。當我特別提出一些帖子的請求時,我收到關于錯誤請求的錯誤訊息,例如“HTTP/1.1 404 Not Found”,當我搜索的專案不正確時,這沒關系。但是如果請求不好,服務器也會向我發送 JSON 格式的訊息正文,如下所示:
{
"responseMessage":"The item you searched not found"
}
有沒有辦法獲取此訊息(而不是錯誤請求訊息“HTTP/1.1 404 Not Found”)并將其顯示為錯誤請求的回應?后端作業正常,我在 Postman 上查看。我的 Post 請求代碼是這樣的:
Json := '{ '
' "code":"' str '",'
' "userid":' userid ''
' } ';
JsonToSend := TStringStream.Create(Json, TEncoding.UTF8);
try
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.CharSet := 'utf-8';
try
sResponse := IdHTTP1.Post('http://....', JsonToSend);
except
on e : Exception do
begin
ShowMessage(e.Message); // this message is : HTTP/1.1 404 Not Found
Exit;
end;
end;
finally
JsonToSend.Free;
end;
uj5u.com熱心網友回復:
要接收錯誤的 JSON 內容,您有 2 個選項:
EIdHTTPProtocolException從其屬性中捕獲并讀取 JSONErrorMessage,而不是Message屬性:try sResponse := IdHTTP1.Post(...); except on E: EIdHTTPProtocolException do begin sResponse := E.ErrorMessage; end; on E: Exception do begin ShowMessage(e.Message); Exit; end; end;啟用屬性中的
hoNoProtocolErrorExceptionandhoWantProtocolErrorContent標志TIdHTTP.HTTPOptions以防止TIdHTTP.Post()引發EIdHTTPProtocolExceptionHTTP 失敗,而只是將 JSON 回傳到您的sResponse變數。如果需要,您可以使用該TIdHTTP.ResponseCode屬性來檢測 HTTP 故障:IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions [hoNoProtocolErrorException, hoWantProtocolErrorContent]; try sResponse := IdHTTP1.Post(...); if IdHTTP1.ResponseCode <> 200 then ... except on E: Exception do ... end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453967.html
