2017-11-22 1 views
0

파이썬 요청 모듈을 사용하여 앱스 API에 액세스하려했습니다. http://se.apidoc.anpdm.com/Browse/Method/MailingListService/CreateMailinglist파이썬 요청을 사용하여 apsis API에 액세스 - 요청한 데이터를 올바르게 요청하는 방법

필자가 과거에 메일 링리스트 을 APSIS API를 내 API 키를 전달하고 계정의 전체를 얻을 수 있었다 http://se.apidoc.anpdm.com/Browse/Method/MailingListService/GetAllMailingLists

그러나 requestbody 매개 변수를 API를 통과하는 문제가 발생 메신저, 내가 볼 수 있습니다 그것을 올바르게 인증하지만 그것은 또한 데이터를 전달하려고하면 나쁜 입력 (400)을 반환합니다 내 코드는 현재;

import requests 
import csv 
import json 
import os 
API_KEY ="ThEApiKeyGoEsHerE" 

headers = { 
    'Accept':'application/json', 
    'Content-Type':'application/json', 
    'User-Agent':'ApsisRestClient- ver1.0.0.0 (Microsoft Windows NT 6.3.9600.0)', 
    'Authorization':'Basic NmJhMzIxYTEtZjUxNi00ZGZkLWFiMmYtNGYyOWQzYTExYmY2Og==', 
    'Accept-Encoding':'gzip,deflate', 
    'Host':'se.api.anpdm.com' 
} 
theRead = open(os.path.dirname(os.path.realpath(__file__)) + "tester.txt","r", newline='') 
message = theRead.read().splitlines() 
params= dict(
     CharacterSet= message[0], 
     Description= message[1], 
     FolderID= message[2], 
     FromEmail= message[3], 
     FromName= message[4], 
     Name= message[5], 
     ReplyToEmail= message[6] 
     ) 
params=json.dumps(params) 
params=json.loads(params) 


r = requests.post('http://se.api.anpdm.com/v1/mailinglists/', headers=headers ,data={'username' : API_KEY, 'password' : ''}, params=params) 
print(r.status_code) 

다른 여러 가지 방법으로 시도해 보았습니다.

r = requests.post('http://se.api.anpdm.com/v1/mailinglists/', headers=headers ,data={'username' : API_KEY, 'password' : ''}, json=params) 

그리고 :

params={ 
    "CharacterSet": message[0], 
    "Description": message[1], 
    "FolderID": message[2], 
    "FromEmail": message[3], 
    "FromName": message[4], 
    "Name": message[5], 
    "ReplyToEmail": message[6] 
} 

r = requests.post('http://se.api.anpdm.com/v1/mailinglists/', headers=headers, data={'username' : API_KEY, 'password' : '', "FromEmail": message[3], "FromName": message[4], "Name": message[5]}) 

은 누구도 날 메신저가 자신의 API를이 여분의 데이터를 전달하는데 방법의 이해 도와 드릴까요? 나는 또한 여분의 데이터를 머리글에 포함하려고했지만 지금은 사용할 수 있습니다.

나는 이제 다음과 같은 편집을 시도했다.

data= { 
     'CharacterSet': message[0], 
     'Description': message[1], 
     'FolderID': message[2], 
     'FromEmail': message[3], 
     'FromName': message[4], 
     'Name': message[5], 
     'ReplyToEmail': message[6], 
     'username' : API_KEY, 
     'password' : '' 
     } 




r = requests.post('http://se.api.anpdm.com/v1/mailinglists/', json.dumps(data), headers=headers) 
print(r.status_code) 

나도 상기 코드 시도

r = requests.post('http://se.api.anpdm.com/v1/mailinglists/', data=json.dumps(data), headers=headers) 
print(r.status_code) 

SOLUTION 실측치 : 좋아 사람들이 문제를 파악 필자; 스크립트 끝 부분에 다음 코드를 포함하면 api에서 유용한 정보를 전송합니다.

print(r.text) 

내가 API를 잘못된 이메일을 전달하려고했다과 마찬가지로이 API를 사용하고자하는 사람들을 위해 작동 할 수 .. 코드를 즐기지 않았다 밝혀; 파이썬에서 올바른 구조를 요청 패키지를 사용하여 POST 요청에 대한

import requests 
import csv 
import json 
import os 
API_KEY ="ThEApiKeyGoEsHerE" 

headers = { 
    'Accept':'application/json', 
    'Content-Type':'application/json', 
    'User-Agent':'ApsisRestClient- ver1.0.0.0 (Microsoft Windows NT 6.3.9600.0)', 
    'Authorization':'Basic NmJhMzIxYTEtZjUxNi00ZGZkLWFiMmYtNGYyOWQzYTExYmY2Og==', 
    'Accept-Encoding':'gzip,deflate', 
    'Host':'se.api.anpdm.com' 
} 
theRead = open(os.path.dirname(os.path.realpath(__file__)) + "tester.txt","r", newline='') 
message = theRead.read().splitlines() 
data= { 
     'CharacterSet': message[0], 
     'Description': message[1], 
     'FolderID': message[2], 
     'FromEmail': message[3], 
     'FromName': message[4], 
     'Name': message[5], 
     'ReplyToEmail': message[6], 
     'username' : API_KEY, 
     'password' : '' 
     } 




r = requests.post('http://se.api.anpdm.com/v1/mailinglists/', data=json.dumps(data), headers=headers) 
print(r.status_code) 

답변

0

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

그냥 게시 및 게시하기 전에 JSON 문자열로 변환 할 수있는 모든 데이터를 하나 개의 사전을 만드는 것입니다.

+0

음 전 이제 데이터 컨테이너에 추가 requestbody 재료이지만 여전히 오류 코드 (401) 인증되지 관해서도 또한 데이터의 헤더를 포함하는 주요 포스트 이 포함되어있다 400 공포의 에러 코드를 포함했다 – user2010884

관련 문제