Tôi đã viết thư viện Delphi cho API StackApps.Nhận phản hồi từ TIdHttp với Mã lỗi 400
Tôi đã gặp sự cố với Indy. Tôi đang sử dụng phiên bản đi kèm với Delphi 2010. Nếu bạn chuyển các tham số không hợp lệ cho một trong các API StackApps, nó sẽ trả về Mã lỗi HTTP 400 và sau đó trong phản hồi nó sẽ chứa một đối tượng JSON với nhiều chi tiết hơn.
Bằng cách truy cập http://api.stackoverflow.com/0.8/stats/?Key=BadOnPurpose trong Trình duyệt Chrome, bạn có thể xem Ví dụ. I E. và Firefox ẩn JSON.
Sử dụng WireShark Tôi có thể thấy rằng đối tượng JSON được trả về bằng cách sử dụng mã bên dưới, nhưng tôi không thể truy cập nó bằng Indy.
Đối với mã kiểm tra này, tôi đã bỏ một thành phần TIdHttp vào biểu mẫu và đặt mã sau vào một lần nhấp nút.
procedure TForm10.Button2Click(Sender: TObject);
var
SS : TStringStream;
begin
SS := TStringStream.Create;
IdHTTP1.Get('http://api.stackoverflow.com/0.8/stats/?Key=BadOnPurpose',SS,[400]);
Memo1.Lines.Text := SS.DataString;
SS.Free;
end;
Tôi đã vượt qua [400] để không tăng 400 ngoại lệ. Nó như thể Indy ngừng đọc câu trả lời. Vì nội dung của Memo1 trống.
Tôi đang tìm cách lấy chi tiết JSON.
Tôi đã sửa. –
Và có AIgnoreReplies là thực sự tốt tại bỏ qua các trả lời :-) –
Tôi cần thiết để có được phản ứng là tốt, vì vậy bạn có thể thêm: Memo1.Lines.Add (IdHTTP1.ResponseText); –