get parse postjsonと変数を使ったPython GETとPOST
私はこれを動作させるようには思えません。これは私が起こっていると思うことです:(しかし、明らかに私は何か間違っています。)
- ユーザーはnidの形で私を与えます。
- nidを取得し、jsonダンプを取得するURLを作成します。
- jsonのダンプからタイトルとボディを取得し、変数titleとbodyに格納します。
- サイト2
試みに様々な変数やPOSTで別のURLを作成:
import requests
import json
#Token used to post
auth_token = "X"
#Take and parse payload for title and body at site 1.
def payload(nid):
from urllib.request import urlopen
with urlopen("www.site1.com/" + nid + ".json") as rr:
result = json.loads(rr.read().decode(rr.headers.get_content_charset("utf-8")))
title = (result["title"])
body = (result["body"]["und"])
#Take title, body, auth_token and then also nid from user input, and POSTing to site 2
def add(nid):
url = "www.site2.com/stuff.json"
headers = {"content-type": "application/json"}
payload = {
"auth_token": auth_token,
"document":
{
"external_id": nid,
"fields": [
{"name": "title", "value": title, "type": "string"},
{"name": "path", "value": "www.site1.com/node/"+nid,"type": "enum"},
{"name": "nid", "value": nid, "type": "integer"},
{"name": "body", "value": body, "type": "text"},
]}
}
r = requests.post(url, data=json.dumps(payload), headers=headers)
print("{} was added".format(nid))
while True:
#Trigger User Input
new_item = input("> ")
#Add nid
if new_item == "A":
nid = input("Give me an NID please: ")
payload(nid)
add(nid)
問題またはエラーは何ですか。 – Backtrack
エラーはありません。 POSTは実際に他のWebサイトには送信しません。または、少なくともデータが投稿されていない。追加機能でタイトルとボディの代わりに静的な値を追加すると、機能します。ペイロード機能で解析されたデータを印刷することもできます。しかし、それらの両方は動作しませんか?私は投稿しようとしているデータを持っていますか?エンコーディングの問題? – avorter