如何用python requests post一段字符串


我要post一段数据,正确的浏览器post数据如下


 POST /boss/gridturnpage?action=refresh&pk=-1&condition=custCode%3D%26businessId%3D-1%26beginlogDate%3D2015-04-20%26endlogDate%3D2015-04-20%26opId%3D%26orgId%3D&tmpPercentWidth=1028&localcache=table&url_source=XMLHTTP HTTP/1.1
Accept: */*
Content-Type: multipart/form-data
Referer: http://10.81.0.3:8080/boss/boss/so/soinfomgr/QryOrdSoRecord.jsp
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)
Host: 10.81.0.3:8080
Content-Length: 1255
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: USERINFO_ATTR=AppframeSerial_12959; CRM_WEB=MJmjV0yh1nzRTVJNTnT1ZTF3mjpLTwGLnkL9wxzy1Fjkk6p5GKGP!-257094400

<TableInfo 
tableid="tblOffer" setname="com.asiainfo.boss.common.web.solog.SETOrdHistory" tablemodel="com.ai.appframe2.web.datamodel.MethodModelForService" implservice_name="com.asiainfo.boss.so.order.base.service.interfaces.IBusiOrderQuerySV" implservice_querymethod="getQOrdSoLogValues(String custCode,long businessId,String beginlogDate,String endlogDate,String opId,String orgId,int $STARTROWINDEX, int $ENDROWINDEX)" implservice_countmethod="getQOrdSoLogValuesCount(String custCode,long businessId,String beginlogDate,String endlogDate,String opId,String orgId)" 
multiselect="false" isquerycount="TRUE" rowsequence="true" width="100%" height="180" pagesize="50" >
<col fieldname='PROD_SPEC_ID' visible='false' />
<col fieldname='SRC_TYPE' visible='false' />
<col fieldname="BUSI_ID"  />
<col fieldname="ORD_CUST_ID"  />
<col fieldname="BUSI_TYPE"  />
<col fieldname="DONE_DATE" width="150"  />
<col fieldname="CUST_NAME" width="80"  />
<col fieldname="CUST_CODE" title="............"  />
<col fieldname="OP_ID" width="80"  />
<col fieldname="CURRENT_ORG_ID" width="120" title="............"  />
<col fieldname="PAY_STATE" width="80"  />
<col fieldname="APP_STATE" width="80"  />
<col fieldname="REMARK" width="150"  />
</TableInfo>

下面是我的代码,boss.txt内容就是<TableInfo 开始到结束,返回的是500


 headers2={"Content-Type":"multipart/form-data",
          "Referer":"http://10.81.0.3:8080/boss/boss/so/soinfomgr/QryOrdSoRecord.jsp",
          "Accept-Language":"zh-cn",
          "Accept-Encoding":"gzip, deflate",
          "DNT":"1"}
s.headers.update(headers2)
files = {'':('',open(r'f:\boss.txt', 'rb'))}

files== urllib.parse.urlencode(files).encode(encoding="gbk")
r=s.post(url='http://10.81.0.3:8080/boss/gridturnpage?action=refresh&pk=-1&condition=custCode%3D%26businessId%3D-1%26beginlogDate%3D2015-04-16%26endlogDate%3D2015-04-17%26opId%3D%26orgId%3D&tmpPercentWidth=1011&localcache=table&url_source=XMLHTTP',files=files)

下面我post的抓包,怎样才能将数据正确的post上去?
图片描述

post requests python3.x

我擦嘞闹得住菇 10 years, 6 months ago

你是按照文件(multipart)的方式post上去对的,如果想把文件内容直接放在post的body里面,那么读一份文件的内容,然后放在data参数里面就行了

路过的童鞋 answered 10 years, 6 months ago

Your Answer