2014-01-11 53 views
0

我想POST請求DWR服務器與一些有效載荷日期是這樣的:POST請求蟒蛇跨域到DWR服務器

callCount=1 
c0-scriptName=Manager 
c0-id=3992_1389451476736 
c0-param1=string: 
c0-param15=string: 
c0-param16=string:-1 
c0-param17=string:1 
xml=true 

我用請求蟒蛇我的第一個問題是我不知道什麼樣的數據接受DWR(字符串,JSON或......)我的代碼是

url = 'https://example.com/Manage.dwr' 
headers = { 
} 

data = 'callCount=1c0-scriptName=MMTPManagerc0-methodName=saveMMTPOrderc0-id=7140_1389449863325c0-param0=string:072CD0A2FE4DAD0450457485587ADB5Cc0-param1=string:c0-param2=string:IRO1MAPN0001c0-param3=string:12190060428937%20%20c0-param4=string:Ac0-param5=string:20000c0-param6=string:0c0-param7=string:c0-param8=string:12913c0-param9=string:Lc0-param10=string:Jc0-param11=string:c0-param12=number:758944325c0-param13=string:2c0-param14=number:1389448044227c0-param15=string:c0-param16=string:-1c0-param17=string:1xml=true' 



def req(): 
    r = requests.post(url, data=data, headers=headers) 
    print r.text 
    print r.headers 
req() 

和應對

//<script type='text/javascript'> 
alert('Error. This may be due to an unsupported browser.\nSee the mailing lists at http://www.getahead.ltd.uk/dwr/ for more information.'); 
//</script> 

的每一個想法並幫助感謝 謝謝

回答

2

從來沒有聽說過dwr之前,我快速瀏覽並找到了Direct Web Remoting網站。由於它看起來需要理解客戶端上的JavaScript,所以不能單獨使用請求。

請求不會對網頁的內容進行任何處理。由於請求不能爲你處理JavaScript,所以你需要使用更多的東西,比如selenium(它在python中有綁定)。

有些東西像硒在組合中,您可能需要將請求中的User-Agent標頭更改爲看起來像真實瀏覽器的東西。您的要求會是這樣的:

r = requests.post(url, data=data, headers={'User-Agent': '<browser user agent>'} 

哪裏'<browser user agent>'是從瀏覽器採取的字符串。可能工作的一個例子可以

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0 

Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36 
+0

感謝提醒 但是當我在Firefox中輸入地址,並嘗試獲取請求同樣的錯誤,告訴我在警告框,其發行着對用戶代理 –

+0

@daviddavoodi那麼我們可以幫到你的並不多。警報給你的鏈接對我來說不起作用,所以我不能告訴你哪些瀏覽器被支持。你在Firefox的現代版本?你可以安裝最新版本的Chrome嗎?如果兩者的答案都是肯定的並且你得到相同的警報,那麼我會猜測該網站已經損壞,而不是其他任何東西。 –

+0

@daviddavoodi也請嘗試訪問http://directwebremoting.org/dwr-demo/,看看底部是否顯示「測試通過」。它適用於Firefox 26和Chrome 31。 –