2012-04-17 40 views
7

Tôi sử dụng curl để gửi yêu cầu SOAP đến dịch vụ web và nhận phản hồi bằng cách sử dụng shell scripting. vui lòng tìm bên dưới lệnh tôi đang sử dụng: -Gọi yêu cầu SOAP từ lệnh shell

curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @sample_request.txt -X POST http://someWebServiceURL 

Tôi nhận được phản hồi lỗi không có tiêu đề SOAPAction. PFB cơ thể phản ứng một phần

<soapenv:Body> 
<soapenv:Fault> 
<faultcode>Client.NoSOAPAction</faultcode> 
<faultstring>WSWS3147E: Error: no SOAPAction header!</faultstring> 
</soapenv:Fault> 
</soapenv:Body> 

Any help is appreciated !!

Trả lời

8

Bạn cần cung cấp tên của hành động SOAP. Bạn có:

-H "SOAPAction:" 

Cung cấp tên của hành động trong đó. Ví dụ.

-H "SOAPAction: http://my_example/my_action" 

Lấy tên của hành động từ WSDL nếu bạn có. Ví dụ: xem How do you determine a valid SoapAction?.

+3

Đừng quên báo giá URI trong tiêu đề SoapAction - thông số yêu cầu rằng nếu nó không phải là rỗng, thì nó phải được trích dẫn kép là 'SOAPAction:" http: // my_example/my_action "' – Petesh

0

Từ WSDL của dịch vụ, bạn có thể tìm thấy SoapAction. Và bạn có thể tìm thấy hoạt động mà bạn đang cố gọi và truy cập WSDL bằng cách mở một trình duyệt web đến url của dịch vụ. Sử dụng Curl để gọi SoapAction, bạn nên chỉ định Hành động theo "-H", chẳng hạn như -H SOAPAction: http://tempuri.org/Execute.

+0

là có cách trong bash linux để làm điều này mà không có curl? –

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