Có cách nào tiêu chuẩn để nhận dữ liệu JSON từ dịch vụ RESTful bằng Python không?Làm cách nào để nhận dữ liệu JSON từ dịch vụ RESTful bằng Python?
Tôi cần sử dụng các kerberos để xác thực.
một số đoạn mã sẽ hữu ích.
Có cách nào tiêu chuẩn để nhận dữ liệu JSON từ dịch vụ RESTful bằng Python không?Làm cách nào để nhận dữ liệu JSON từ dịch vụ RESTful bằng Python?
Tôi cần sử dụng các kerberos để xác thực.
một số đoạn mã sẽ hữu ích.
Something như thế này nên làm việc trừ khi tôi đang bị mất điểm:
import json
import urllib2
json.load(urllib2.urlopen("url"))
Trước tiên, tôi nghĩ rằng sẽ đưa ra giải pháp của riêng bạn cho tất cả những gì bạn cần là urllib2 hoặc httplib2. Dù sao trong trường hợp bạn yêu cầu một máy khách REST chung kiểm tra điều này.
https://github.com/scastillo/siesta
Tuy nhiên tôi nghĩ rằng các bộ tính năng của thư viện sẽ không làm việc cho hầu hết các dịch vụ web bởi vì họ có thể sẽ sử dụng oauth vv ... Ngoài ra tôi không thích thực tế là nó được viết trên httplib đó là một nỗi đau so với httplib2 vẫn sẽ làm việc cho bạn nếu bạn không phải xử lý rất nhiều chuyển hướng vv ..
Tôi sẽ cung cấp cho các requests thư viện để thử cho việc này. Về cơ bản, việc sử dụng trình bao bọc xung quanh các mô-đun thư viện chuẩn dễ dàng hơn nhiều (ví dụ: urllib2, httplib2, v.v.) bạn sẽ sử dụng cho cùng một điều. Ví dụ, để lấy dữ liệu json từ một url yêu cầu xác thực cơ bản sẽ trông như thế này:
import requests
response = requests.get('http://thedataishere.com',
auth=('user', 'password'))
data = response.json()
cho xác thực Kerberos các requests project có thư viện reqests-kerberos mà cung cấp một lớp xác thực Kerberos mà bạn có thể sử dụng với requests:
import requests
from requests_kerberos import HTTPKerberosAuth
response = requests.get('http://thedataishere.com',
auth=HTTPKerberosAuth())
data = response.json()
Nếu bạn thiếu mô-đun 'yêu cầu', chỉ cần thực hiện:' pip install requests'. Thông tin và tài liệu khác [ở đây] (http://docs.python-requests.org/en/latest/user/install/) – gudthing
tại sao câu trả lời json của tôi trở thành với u trước cặp khóa, giá trị? * {u'status ': u'FINISHED', u'startTime ': u'2016-11-08T15: 32: 33.241Z', u'jobId ': u'f9d71eaa-d439-4a39-a258-54220b14f1b8', u 'context': u'sql-context ', u'duration': u'0.061 secs '} * –
Về cơ bản, bạn cần thực hiện yêu cầu HTTP cho dịch vụ và sau đó phân tích cú pháp nội dung của phản hồi. Tôi thích sử dụng httplib2 cho nó:
import httplib2 as http
import json
try:
from urlparse import urlparse
except ImportError:
from urllib.parse import urlparse
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=UTF-8'
}
uri = 'http://yourservice.com'
path = '/path/to/resource/'
target = urlparse(uri+path)
method = 'GET'
body = ''
h = http.Http()
# If you need authentication some example:
if auth:
h.add_credentials(auth.user, auth.password)
response, content = h.request(
target.geturl(),
method,
body,
headers)
# assume that content is a json reply
# parse content with the json module
data = json.loads(content)
Cảm ơn tác vụ này –
Nếu bạn mong muốn sử dụng Python 3, bạn có thể sử dụng như sau:
import json
import urllib.request
req = urllib.request.Request('url')
with urllib.request.urlopen(req) as response:
result = json.loads(response.readall().decode('utf-8'))
Làm cách nào để sử dụng kerberos này để xác thực? – Foon
này có thể giúp bạn http://stackoverflow.com/questions/ 713847/recommendations-of-python-phần còn lại-web-dịch vụ-khung –
Tôi không tìm kiếm fro "Python - ** dựa ** khung REST". Tôi muốn sử dụng dịch vụ RESTful được cung cấp bởi một số máy chủ java trong python. Dù sao cũng cảm ơn bạn. – Bala