প্যারাম ডেটা সহ পাইথন রিকোয়েস্ট পোস্ট


150

এটি একটি API কলের জন্য কাঁচা অনুরোধ:

POST http://192.168.3.45:8080/api/v2/event/log?sessionKey=b299d17b896417a7b18f46544d40adb734240cc2&format=json HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 86
Host: 192.168.3.45:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

{"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}"""

এই অনুরোধটি সাফল্যের (2XX) প্রতিক্রিয়া দেয় returns

এখন আমি এই অনুরোধটি ব্যবহার করে পোস্ট করার চেষ্টা করছি requests:

>>> import requests
>>> headers = {'content-type' : 'application/json'}
>>> data ={"eventType":"AAS_PORTAL_START","data{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}
>>> url = "http://192.168.3.45:8080/api/v2/event/log?sessionKey=9ebbd0b25760557393a43064a92bae539d962103&format=xml&platformId=1"
>>> requests.post(url,params=data,headers=headers)
<Response [400]>

সবকিছু আমার কাছে সুন্দর দেখাচ্ছে এবং 400 টি প্রতিক্রিয়া পেতে আমি কী ভুল পোস্ট করছি তা সম্পর্কে আমি নিশ্চিত নই।

উত্তর:


260

paramsজিইটি-স্টাইলের ইউআরএল প্যারামিটারগুলির জন্য, dataএটি পোস্ট-শৈলীর বডি তথ্যের জন্য। অনুরোধে উভয় ধরণের তথ্য সরবরাহ করা পুরোপুরি আইনী এবং আপনার অনুরোধটিও তাই করে তবে আপনি ইউআরএলটিতে ইউআরএল প্যারামিটারগুলি ইতিমধ্যে এনকোড করেছেন।

আপনার কাঁচা পোস্টে যদিও JSON ডেটা রয়েছে । requestsআপনার জন্য জেএসএন এনকোডিং পরিচালনা করতে পারে এবং এটি সঠিকও সেট করবে Content-Header; আপনাকে যা করতে হবে তা হ'ল পাইথন অবজেক্টে jsonকীওয়ার্ড আর্গুমেন্টে JSON হিসাবে এনকোড করা ।

আপনি ইউআরএল প্যারামিটারগুলিও বিভক্ত করতে পারেন:

params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}

তারপরে আপনার ডেটা পোস্ট করুন:

import requests

url = 'http://192.168.3.45:8080/api/v2/event/log'

data = {"eventType": "AAS_PORTAL_START", "data": {"uid": "hfe3hf45huf33545", "aid": "1", "vid": "1"}}
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}

requests.post(url, params=params, json=data)

jsonশব্দ মধ্যে নতুন requestsসংস্করণ 2.4.2; যদি আপনার এখনও পুরানো সংস্করণ ব্যবহার করতে হয় তবে jsonমডিউলটি ব্যবহার করে JSON ম্যানুয়ালি এনকোড করুন এবং এনকোডযুক্ত ফলাফলটি dataকী হিসাবে পোস্ট করুন ; সেক্ষেত্রে আপনাকে স্পষ্টভাবে কন্টেন্ট-টাইপ শিরোনাম সেট করতে হবে:

import requests
import json

headers = {'content-type': 'application/json'}
url = 'http://192.168.3.45:8080/api/v2/event/log'

data = {"eventType": "AAS_PORTAL_START", "data": {"uid": "hfe3hf45huf33545", "aid": "1", "vid": "1"}}
params = {'sessionKey': '9ebbd0b25760557393a43064a92bae539d962103', 'format': 'xml', 'platformId': 1}

requests.post(url, params=params, data=json.dumps(data), headers=headers)

12

এটিতে ডেটা সেট করুন:

data ={"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}

5
আপনি তাঁর ডেটা থেকে আলাদাভাবে কী করেছেন তা সংক্ষেপে ব্যাখ্যা করুন
আয়ান খান

8

কোনও মানকে প্রতিক্রিয়া নির্ধারণ করুন এবং এর বৈশিষ্ট্যগুলি পরীক্ষা করুন। এগুলি আপনাকে দরকারী কিছু বলতে হবে।

response = requests.post(url,params=data,headers=headers)
response.status_code
response.text
  • স্ট্যাটাস_ কোডে অবশ্যই আপনাকে আগে দেওয়া কোডটি অবশ্যই পুনরায় নিশ্চিত করা উচিত

আমি এটির আগে চেষ্টা করেছিলাম এবং এটিতে অনুরোধ আইডি সিনট্যাক্টিক্যালি ভুল বলেছে।
স্লাইড এসিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.