2011-10-21 26 views
6

Tôi đang cố gắng tạo một thư viện Perl để kết nối với một WebService. Webservice này nằm trong máy chủ HTTPS và người dùng của tôi có quyền truy cập vào nó.Perl SOAP :: WSDL truy cập vào HTTPS Lỗi không được quản lý

Tôi đã thực hiện wsdl2perl.pl nhiều lần, với các tùy chọn khác nhau và luôn thất bại với thông báo: Unauthorized at /usr/lib/perl5/site_perl/5.8.8/SOAP/WSDL/Expat/Base.pm line 73. Điều là, khi tôi không cung cấp cho người dùng/pass làm đối số, nó thậm chí không yêu cầu họ.

Tôi đã đọc [SOAP :: WSDL :: Manual :: Cookbook] (http://search.cpan.org/~mkutter/SOAP-WSDL-2.00.10/lib/SOAP/WSDL/Manual/ Cookbook.pod) và thực hiện những gì nó nói về HTTPS: Crypt :: SSLeay là instaleld, và cả SOAP :: WSDL :: Transport :: HTTP và SOAP :: Transport :: HTTP được sửa đổi.

Bạn có thể đưa ra bất kỳ gợi ý nào về những gì có thể xảy ra không?

+0

Tôi thực sự xin lỗi vì sự quan tâm của bạn nhưng tôi không thể nhớ lại những gì tôi đang làm việc. Nhìn vào nhật ký của tôi, có vẻ như tôi đã được lệnh để kết nối với một WS Sharepoint để lấy một số thông tin vì vậy bây giờ tôi cho rằng tôi cần NTLM auth. Dự án này đã chết rất lâu nên tôi thực sự xin lỗi vì nỗ lực của bạn. –

Trả lời

0

Bạn có thể tự do truy cập tệp WSDL từ trình duyệt web của mình không? Có ai khác trong mạng của bạn truy cập vào mạng mà không gặp bất kỳ sự cố nào không?

Có lẽ máy chủ web hosting file WSDL đòi hỏi cơ bản hoặc một số loại khác của xác thực ...

0

Nếu không cần thiết, tôi không khuyên bạn nên sử dụng perl như một khách hàng dịch vụ web .Như bạn đã biết, perl là một ngôn ngữ mã nguồn mở, mặc dù nó hỗ trợ giao thức xà phòng, nhưng hỗ trợ của nó dường như không đạt tiêu chuẩn. Đầu tiên, tài liệu của nó không rõ ràng. Và cũng có thể, sự hỗ trợ của nó đôi khi bị giới hạn. với chỗ ấy. Vì vậy, nếu bạn phải sử dụng wsdl2perl, bạn có thể sử dụng komodo để bước vào mã để tìm hiểu những gì đã xảy ra. Đây chỉ là những gì tôi đã từng làm khi sử dụng perl như một khách hàng dịch vụ web.Bạn biết đấy, trong trở lại của https là SSL, vì vậy, nếu SSL của bạn dựa trên chứng chỉ được ủy quyền, bạn phải thiết lập đường dẫn cert của bạn và danh sách các máy chủ đáng tin cậy cert.You'd tốt hơn sử dụng Linux dựa trên firefox để có một test.As I biết, bạn có thể thiết lập đường dẫn cert firefox và danh sách cert đáng tin cậy của firefox.Nếu firefox có thể giao tiếp với máy chủ dịch vụ web của bạn một cách thành công, thì, đã đến lúc gỡ lỗi ứng dụng khách perl của bạn.

0

Để gỡ lỗi các tình huống với Perl và SOAP, hãy trao đổi proxy web để bạn có thể xem chính xác dữ liệu nào đang được chuyển và phản hồi nào được gửi lại từ máy chủ. Bạn đã nhận được 401 Không được ủy quyền, tôi mong đợi, nhưng có thể có nhiều chi tiết hơn trong phản hồi của máy chủ.

Cả Fiddler http://docs.telerik.com/fiddler và Charles proxy https://www.charlesproxy.com/ đều có thể thực hiện việc này.

0

Các thông báo lỗi bạn trích dẫn có vẻ là từ dòng này: die $response->message() if $response->code() ne '200'; và trong HTTP thế giới, Unauthorized rõ ràng là mã lỗi 401, có nghĩa là trang web của bạn yêu cầu tên người dùng và mật khẩu (có lẽ hầu hết, một số trang web có thể "cướp "mã lỗi này để phục vụ cho các điều kiện khác như bộ lọc trên IP nguồn). Bạn có chúng không?

Nếu vậy, bạn có thể

  • sau wdsl2perl đã chạy, tìm trong các tập tin được tạo ra nơi set_proxy() được gọi và thay đổi URL trong đó bao gồm tên người dùng và mật khẩu như thế: ...->set_proxy('http://USERNAME:[email protected]/...')
  • hoặc bạn trong mã, sau khi khởi tạo đối tượng SOAP::WSDL, hãy gọi số service(SERVICENAME) trên đó (cho mỗi dịch vụ bạn đã xác định trong tệp WSDL), cung cấp cho bạn một đối tượng mới, trên đó bạn gọi transport() để truy cập đối tượng truyền tải cơ bản mà bạn có thể gọi proxy() với URL được định dạng ở trên (có nó là proxy() ở đây và set_proxy() ở trên); hoặc bạn gọi credentials() thay vì proxy() và bạn vượt qua 4 dây:
    1. 'HOSTNAME: PORT'
    2. lĩnh vực, như được đưa ra bởi các máy chủ web nhưng tôi nghĩ rằng bạn có thể đặt bất cứ điều gì
    3. tên người dùng
    4. sự mật khẩu
Các vấn đề liên quan