Có thể sử dụng thư viện requests
của Python để gửi yêu cầu SOAP không?Gửi yêu cầu SOAP bằng cách sử dụng Yêu cầu Python
Trả lời
Thực sự là có thể.
Dưới đây là một ví dụ gọi SOAP Weather Service sử dụng đơn giản yêu cầu lib:
import requests
url="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"
#headers = {'content-type': 'application/soap+xml'}
headers = {'content-type': 'text/xml'}
body = """<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://ws.cdyne.com/WeatherWS/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body><ns0:GetWeatherInformation/></ns1:Body>
</SOAP-ENV:Envelope>"""
response = requests.post(url,data=body,headers=headers)
print response.content
Một số lưu ý:
- Các tiêu đề rất quan trọng. Hầu hết các yêu cầu SOAP sẽ không hoạt động nếu không có tiêu đề chính xác.
application/soap+xml
có lẽ là hơn đúng tiêu đề để sử dụng (nhưng weatherservice thíchtext/xml
- này sẽ trả lại phản ứng như là một chuỗi của xml -. Sau đó bạn sẽ cần phải phân tích xml mà
- Để đơn giản tôi đã bao gồm các yêu cầu . plain text Nhưng thực hành tốt nhất sẽ được lưu trữ này làm mẫu, sau đó bạn có thể tải nó bằng cách sử jinja2 (ví dụ) - và cũng vượt qua trong các biến
Ví dụ:
.Một số người đã đề cập đến thư viện thư viện. Suds có lẽ là cách chính xác hơn tương tác với SOAP, nhưng tôi thường thấy rằng nó hoảng loạn một chút khi bạn có WDSL được hình thành không đúng (TBH, có nhiều khả năng không phải khi bạn đang giao dịch với một tổ chức vẫn còn sử dụng SOAP;)).
Bạn có thể làm các việc trên với bọt như vậy:
from suds.client import Client
url="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"
client = Client(url)
print client ## shows the details of this service
result = client.service.GetWeatherInformation()
print result
Lưu ý: khi sử dụng bọt, bạn sẽ hầu như luôn luôn kết thúc cần phải use the doctor!
Cuối cùng, một chút tiền thưởng để gỡ lỗi SOAP; TCPdump là bạn của bạn. Trên máy Mac, bạn có thể chạy TCPdump như sau:
sudo tcpdump -As 0
Điều này có thể hữu ích để kiểm tra các yêu cầu thực sự đi qua dây.
Hai đoạn mã trên cũng có sẵn như là GIST:
nếu dịch vụ yêu cầu tên người dùng và mật khẩu thì sao? nơi để lưu ý chúng? – Oskars
Đoạn mã suds hiện cung cấp "suds.transport.TransportError: Lỗi HTTP 500: Lỗi máy chủ nội bộ". Có vẻ như máy chủ đã bị đóng. – Louis
@ toast38coza http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL -> Lỗi máy chủ trong ứng dụng '/ WeatherWS'. Vui lòng cập nhật ví dụ. –
- 1. Yêu cầu HTTP SOAP PHP
- 2. làm cách nào để gửi yêu cầu SOAP?
- 3. Yêu cầu SOAP bằng PHP với CURL
- 4. Cách đăng Yêu cầu SOAP từ PHP
- 5. Cách đăng Yêu cầu SOAP từ .NET?
- 6. Cách gửi yêu cầu oauth bằng python-oauth2
- 7. Sử dụng "yêu cầu" python để gửi JSON boolean
- 8. Gọi yêu cầu SOAP từ lệnh shell
- 9. Gửi yêu cầu SOAP, bắt đầu từ đâu?
- 10. Đăng JSON bằng cách sử dụng các yêu cầu Python
- 11. Cách gửi yêu cầu POST?
- 12. Đang gửi yêu cầu JSON với Python
- 13. Xóa vùng tên khỏi yêu cầu SOAP
- 14. Gửi yêu cầu POST không phải ASCII bằng Python?
- 15. Yêu cầu SOAP với thuộc tính
- 16. Gửi yêu cầu POST bằng netcat
- 17. Gửi yêu cầu đăng bằng lưới/http
- 18. Python SUDS SOAP yêu cầu dịch vụ https 401
- 19. Làm thế nào để mô phỏng yêu cầu bài HTTP bằng cách sử dụng mô-đun Yêu cầu Python?
- 20. Nút yêu cầu HTTP.js bằng cách sử dụng 'yêu cầu' của mikeal
- 21. Cách gửi yêu cầu xml-rpc trong python?
- 22. Gửi http xóa yêu cầu
- 23. Thực hiện một yêu cầu SOAP bằng cách sử dụng XML trong Rails
- 24. là có thể nhận yêu cầu SOAP miền chéo bằng cách sử dụng jquery
- 25. Symfony2: gửi yêu cầu HTTP
- 26. Cách gửi yêu cầu OAuth trong Node
- 27. Cách gửi lại yêu cầu GWT RequestFactory
- 28. Cách thêm tiêu đề SOAP vào yêu cầu SOAP bằng JAX-WS?
- 29. cách hủy yêu cầu http bằng cách sử dụng javascript
- 30. Gọi lại yêu cầu AJAX bằng cách sử dụng jQuery
thế nào là giải pháp này? http://stackoverflow.com/q/15569330/2620328 – sihrc
không được phép sử dụng bọt; –
@DeepankarBajpeyi tại sao không? Đó là công cụ duy nhất phù hợp cho công việc. –