2011-04-06 87 views
0

使用Python 2.5和httplib ......爲什麼我的申請失敗?

我承認是一個蟒蛇新手......但這看起來很簡單,爲什麼這不工作?

httpConn = HTTPConnection('127.0.0.1', 44789) 
httpConn.request('PUT','/ShazaamMon/setmfgdata.cgi?serial=', hwSerialNum) 
httpResp = httpConn.getresponse() 

xmlResp = httpResp.read() 

httpConn.close() 

它返回下列響應:<HTML><HEAD><TITLE>HTTP 404.......

任何線索任何人???

+0

什麼是您的瀏覽器說'HTTP://127.0.0.1:44789/ShazaamMon/setmfgdata.cgi'? – eumiro 2011-04-06 14:30:35

+0

@eumiro將使用HTTP GET方法,與他想要使用的PUT方法不同。 – 2011-04-06 14:33:03

回答

1

HTTP 404意味着你請求的資源不存在。你確定這個網址是正確的嗎?

而且,你把請求(的request()第三個參數),我認爲是請求的參數變量的身體。

嘗試以下操作:

httpConn.request('PUT','/ShazaamMon/setmfgdata.cgi?serial=' + str(hwSerialNum)) 

或者可能(如果需要GET而不是PUT):

httpConn.request('GET','/ShazaamMon/setmfgdata.cgi?serial=' + str(hwSerialNum)) 
+0

我可以輸入這個網址到瀏覽器:http://127.0.0.1:44789/ShazaamMon/setmfgdata.cgi?serial=xxxxxxx和所有似乎工作好,意味着我就能查詢設備,看屬性已經改變。 – Kevin 2011-04-06 14:32:43

+0

@Kevin如果你在瀏覽器中使用GET請求輸入它。試試我發佈的第二行代碼,看看它是否有效。 – 2011-04-06 14:33:43

+0

計算器壞了,人們可以張貼到包含其他民族答案,拿到票後編輯自己的答案... – Angelom 2011-04-06 14:40:18

2

我認爲你應該用GET代替PUT。

你應該考慮消毒的輸入,trye

httpConn.request('GET','/ShazaamMon/setmfgdata.cgi?serial=%s' % (urllib.quote(hwSerialNum)))