2016-08-24 4 views
-2

JS 아약스 응답과 비슷한 델파이 IdHTTP에서 어떻게 응답 텍스트를 얻을 수 있습니까? 페이지 내용을 포함하는 표준 responseText 속성이 있으며 IdHTTP에는 responseCode 속성이 있지만 HTTP 상태 코드를 나타냅니다.델파이 IdHTTP 응답 텍스트

예를 들어, JS ajax 응답에는 statusCode 및 responseText가 있습니다 (이미지 참조). XMLHttpRequest에서

+0

이것은 일반 요청시 0을 반환하고 오류시 음수를 반환하는 맞춤 API의 repsonse 코드입니다. – Ariakas

+0

질문 : 답변에서 전체 콘텐츠에 액세스하는 방법을 묻고 있습니까? 또는 서버에서받은이 JSON을 구문 분석하는 방법을 묻는 중입니까? '-1'이 * 전체 * 내용을 받았습니까? 또는 JSON 객체가 * 전체 * 컨텐츠입니까? –

+0

JSON은 JS에서 아약스를 사용하여 얻은 응답의 예일뿐입니다. 델파이의 ResponseText에는 'HTTP/1.1 400 잘못된 웹 API 키'문자열이 포함되어 있습니다. Ajax의 responseText에는 '-1'이 포함되어 있습니다. 나는 델파이에서 '-1'을 얻을 필요가있다. – Ariakas

답변

1

좋아, 결국 해결책을 찾았습니다. 내가 시도 ... 캐치 연산자와 EIdHTTPProtocolException를 사용하는 것을 얻으려면 :

내 질문에 처음 불분명 경우
try 
    Result := id_http.Post(url, params); 
except 
    on E: EIdHTTPProtocolException do 
    if (id_http.ResponseCode = 400) then 
     Result := E.ErrorMessage 
    else 
     Result := E.Message; 
end; 

죄송합니다.

3

responseText

enter image description here

는 인디 라이브러리의 응답의 "내용"에 해당합니다. TIdHTTP.Get로 전화하면이 콘텐츠를 얻을 수있는 몇 가지 방법이 있습니다. 가장 쉬운 콘텐츠 유형에 따라
var 
    ResponseText: String; 
begin 
    ResponseText := IdHTTP1.Get('www.google.com'); 
    ... 
end; 

, 당신은 어떤 채울 수있는 예를 하나 들면, Get의 다른 오버로드 중 하나를 사용하실 수 있습니다 ... 단지 String으로 Get 함수의 결과를 읽는 것입니다 a TStream.

+0

예, TIdHTTP.Get() 오버로드를 사용하여 JSON 컨텐츠를 먼저 다운로드해야합니다. 그런 다음 JSON을 구문 분석하여 'status'및 'responseText' 값을 추출 할 수 있습니다. –