2017-10-06 13 views
0

XML APIをヒットしようとしています。小さなXMLペイロードを使用しているときはうまく動作します。PythonリクエストXML API例外ConnectionError:xmlサイズが大きくなると( 'Connection aborted。'、BadStatusLine( "''"、))

以下

XMLは例外以下のより多くのデータと大きくなった瞬間が

Traceback (most recent call last): 
File "C:\Users\dell\Desktop\SMS XML\xml_sms_api.py", line 30, in <module> 
response = requests.post(url, params = payload, headers=headers) 
File "C:\Python27\lib\site-packages\requests\api.py", line 110, in post 
return request('post', url, data=data, json=json, **kwargs) 
File "C:\Python27\lib\site-packages\requests\api.py", line 56, in request 
return session.request(method=method, url=url, **kwargs) 
File "C:\Python27\lib\site-packages\requests\sessions.py", line 488, in request 
resp = self.send(prep, **send_kwargs) 
File "C:\Python27\lib\site-packages\requests\sessions.py", line 609, in send 
r = adapter.send(request, **kwargs) 
File "C:\Python27\lib\site-packages\requests\adapters.py", line 473, in send 
raise ConnectionError(err, request=request) 
ConnectionError: ('Connection aborted.', BadStatusLine("''",)) 

を上げているコード

import requests 

xml = """<?xml version="1.0" encoding="ISO-8859-1"?> 
    <!DOCTYPE MESSAGE SYSTEM "http://127.0.0.1:80/psms/dtd/messagev12.dtd"> 
    <MESSAGE VER="1.2"> 
    <USER USERNAME="xxxxx" PASSWORD="xxxx" /> 
    <CONTENT UDH="0" CODING="1" TEXT="SAMPLE" PROPERTY="0" ID="1" TEMPLATE=""> 
    <ADDRESS FROM="XXXX" TO="XXXXXXXXXX" SEQ="0" TAG="test"/> 
    ...... 
    ...... 
    </CONTENT> 
    </MESSAGE>""" 

    payload = {'data' : xml,'action' : 'send'} 
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0', 
       'Content-Type': 'application/xml'} 
    response = requests.post(url, params = payload, headers=headers) 
    print response.status_code 
    print response.content 

あるペイロードXMLのサイズが小さいまで、それは絶対に正常に動作します。しかし、APIは1つのXMLで5k個のエントリまで検証されます。

+0

もデータへのparamsを変更しました。とにかく、https://httpbin.org/に対してコードをテストして、クライアントの問題があるかどうかを調べることができます。 – glenfant

+0

@glenfant:APIサーバーには、問題なく大きなXMLペイロードを受け入れるテスト環境があります。 Pythonスクリプトを使用して接続すると問題が発生する – JithPS

答えて

0

さまざまなオプションを試した後、問題と解決策が見つかりました。

XMLはRequestsのparamsとして提供されるため、URLにエンコードされたURLが取得されています。したがって、巨大なXMLデータが渡されると、URLの長さが制限を超えます。

は、だからあなたの問題の原因は、あなたのスクリプトが接続されているサーバソフトウェアで明らかにされたコンテンツタイプ

payload = {'data' : xml,'action' : 'send'} 
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0', 
      'Content-Type': 'application/application/x-www-form-urlencoded'} 
response = requests.post(url, data = payload, headers=headers) 
関連する問題