2010-04-16 27 views
5

chúng tôi đang phát triển một WebService SOAP (Apache/PHP). Tất cả chạy tốt cho các cuộc gọi kích thước nhỏ, nhưng với một cuộc gọi xà phòng 1Mb (kích thước cuộc gọi HTTPS là 1MB) khách hàng Delphi Soap của chúng tôi dừng lại với thời gian chờ trên tất cả PC nhưng một máy khách PHP của chúng tôi chạy tốt với default_socket_timeout = 300, nhưng dừng lại với "Lỗi tìm nạp tiêu đề http" với default_socket_timeout = 60.Xà phòng Delphi Khách hàng kết thúc với một thời gian chờ cho một cuộc gọi 1MB

Làm cách nào để thay đổi thời gian chờ cho Delphi? Trên thực tế thời gian chờ này dường như trong thư viện mạng Windows XP (wininet.dll gọi bằng soaphttptrans.pas)

Cảm ơn
Cédric

Trả lời

5

Trong thực tế, nó là một vấn đề với cài đặt IE7: nó thay đổi tất cả thời gian chờ mạng.

PC với IE6 có thời gian chờ 3600 giây, IE7 thay đổi thành 30 giây. Sử dụng InternetQueryOption() hiển thị điều này và InternetSetOption giúp thay đổi điều này.

Rất cảm ơn người bạn đời của tôi đã tìm kiếm lỗi trong nhiều giờ.

3

Có một MaxSinglePostSize trong SOAPHttpTrans. Tôi dường như nhớ lại có vấn đề với điều đó. Đây không phải là giới hạn, nhưng nó hoạt động khác nhau (chia nhỏ thành các phần để gửi) nếu bạn đã qua, hoặc dưới giới hạn đó. (về cơ bản là 32768 theo mặc định). Tôi hy vọng bạn sẽ đạt kích thước đó sớm hơn nếu bạn đang ở trên D2009/D2010 do widestrings. Sẽ rất thú vị nếu bạn gặp rắc rối xung quanh kích thước đó. Bạn có thể sử dụng Fiddler để nắm bắt một số đầu ra (hoặc móc vào sự kiện OnBeforePost và kết xuất XML đã tuần tự hóa thành một tệp) và xem đó có phải là nơi bạn gặp phải sự cố, thay vì 1MB đã quan sát trước đó.

Nhưng dù sao, lớp THTTPReqResp có các tùy chọn cho SendTimeout và ReceiveTimeout. Hãy thử điều chỉnh chúng.

Ngoài ra ... nếu bạn đang sử dụng Delphi trước Delphi2007, bạn nên cập nhật thư viện xà phòng của mình. Có một tải xuống ở đâu đó ... nhiều bản sửa lỗi, bao gồm cả vấn đề bộ nhớ khó chịu khiến ứng dụng của bạn bị dừng bởi DEP.

+1

Một điều cần xem xét .... Thử chạy tải trọng qua SoapUI. SoapUI sử dụng một ngăn xếp giao tiếp khác nhau (dựa trên Java) thay vì WinInet. Nếu bạn có kết quả tương tự, bạn biết đó có thể là sự cố xảy ra ở máy chủ hoặc trung gian như tường lửa, proxy, ESB, v.v. không phải là khách hàng. –

Các vấn đề liên quan