2017-04-07 2 views
1

데스크탑 응용 프로그램에 8080 포트를 수신 대기하라는 python 스크립트를 작성하려고합니다. 아래는 요청을하기 위해 사용하는 코드입니다. 나는 동일 우체부의 응용 프로그램을 사용하려고 할 때Python HTTP POST 요청 성공

import requests 

payload = {"url":"abcdefghiklmnopqrstuvwxyz=", 
"password":"qertyuioplkjhgfdsazxvnm=", 
"token":"abcdefghijklmn1254786=="} 

headers = {'Content-Type':'application/json'} 
r = requests.post('http://localhost:9015/login',params = payload, headers=headers) 
response = requests.get("http://localhost:9015/login") 
print(r.status_code) 

요청을 한 후, 나는, 그러나 401

의 응답 코드를 얻을, 나는 성공적인 응답을 얻을.

URL: http://localhost:9015/login 
METHOD : POST 
Headers: Content-Type:application/json 
Body: {"url":"abcdefghiklmnopqrstuvwxyz=", 
     "password":"qertyuioplkjhgfdsazxvnm=", 
     "token":"abcdefghijklmn1254786=="} 

내가 내 파이썬 스크립트로 잘못 가고 위치에 대한 몇 가지 제안을받을 수 다음 나는 이죠 포기 세부 사항을 다음? 자동 Content-Type를 설정, 더 나은, jsondata에 합격하거나,시기

답변

1

당신은 params을 전달합니다. 그래서, 그것은해야한다 :

import json 
r = requests.post('http://localhost:9015/login', data=json.dumps(payload), headers=headers) 

또는

r = requests.post('http://localhost:9015/login', json=payload) 

+0

감사 @alexpeits (params URL에 매개 변수를 조회 할 키 - 값 쌍을 추가합니다). 첫 번째 옵션은 나를 위해 작동하지 않았지만 두 번째 옵션은 완벽하게 작동했습니다. – mbvee

+0

맞아 - 내 대답에 첫 번째 옵션을 업데이트했습니다. – alexpeits