2011-04-06 7 views
0

Python 2.5とhttplibを使用しています......私のPut要求が失敗するのはなぜですか?

私は確かにPythonの初心者です.....しかし、これはまっすぐに思われる、なぜこれは動作しませんか?

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

+0

@eumiroこれは、使用するPUTメソッドとは異なり、HTTP GETメソッドを使用します。 –

答えて

1

HTTP 404あなたが入力をサニタイズ検討すべきである

は、あなたが要求したリソースが存在しないことを意味します。 URLが正しいと確信していますか?

さらに、リクエストの本体(第3パラメータrequest())に、リクエストのパラメータと思われる変数を入れます。

次のことを試してみてください。

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

または多分(GETではなくPUTで必要な場合):

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

私はこのURLをブラウザに入力することができます:http://127.0.0.1:44789/ShazaamMon/setmfgdata.cgi?serial=xxxxxxxそしてすべてが正常に動作しているように見えます。つまり、デバイスをクエリして属性が変更されていることを確認できます。 – Kevin

+0

@Kevinブラウザに入力すると、GETリクエストが使用されます。私が掲示した2行目のコードを試してみてください。 –

+0

stackoverflowが壊れている、人々は他の人々の回答を含むために投稿した後に回答を編集し、投票を得ることができます... – Angelom

2

PUTをGETに置き換えてください。 trye

httpConn.request('GET','/ShazaamMon/setmfgdata.cgi?serial=%s' % (urllib.quote(hwSerialNum))) 
関連する問題