如何使用Python请求修复“对象引用未设置为对象的实例”错误

时间:2019-09-23 15:45:11

标签: python python-requests

我正在尝试使用supportsync API(https://help.supportsync.com/crm/api/help)提取我公司数据中的收益表。

我能够使用许多post和get方法,而不会出现问题,但是当我使用“ GetReturnList”帖子时,我收到以下错误消息:“ Message”:“对象引用未设置为的实例一个对象。在SupportSyncCRM”

这是我要使用的特定API帖子:https://help.supportsync.com/crm/api/help/Api/POST-api-app-Returns-GetReturnList

我尝试使用json代替有效负载数据,但这似乎并没有改变任何内容。奇怪的是,我在API中使用其他方法没有问题。

下面是我的代码段:

URL = 'https://[mycompany].supportsync.com/crm/api/app/Returns/GetReturnList'
headers = {'Authorization': 'Basic ' + auth.decode('ascii'), 'Content-Type':'application/json'}
payload = {'PageSize':'500', 'ReturnListType':'Receiving', 'SearchType':'0'}

r = requests.post(URL, headers=headers, data=payload)

print(r.status_code)
print(r.text)
print(r.json)

Here is the output generated by my print statements:
400
{"Message":"Object reference not set to an instance of an object. at SupportSyncCRM"}
<bound method Response.json of <Response [400]>>

2 个答案:

答案 0 :(得分:0)

仔细阅读文档,URL中的app是不正确的-它不应是文字文本app,而是:

  

{app}是发出请求的应用程序,例如:zendesk

答案 1 :(得分:0)

所以我联系了他们的支持团队,他们对此做出了回应:

  

这是POST的示例。确保您具有所有这些字段:

{
  "PageIndex":0,
  "PageSize":50,
  "SortColumn":"",
  "CustomerID":"",
  "CustomerEmail":"",
  "ReturnListType":"",
  "FlagGroupId":"",
  "FlagReason":"",
  "SearchText":"",
  "SearchType":0,
  "ReturnTypeId":"",
  "CarrierMethodId":"",
  "IsCrossShip":"",
  "IsPrepaidReturnLabel":"",
  "CreatedByUserId":"",
  "ProductId":"",
  "ReturnReasonId":"",
  "PaymentRequired":0,
  "CreatedDateFrom":"",
  "CreatedDateTo":""
}

然后,我更改了代码以在有效负载中包含每个字段,并更改了这一行:

r = requests.post(URL, headers=headers, json=payload)

我的响应现在正在与服务器正确通信。