2017-12-04 35 views
0

Androidアプリを使用して、base64でエンコードされた文字列をCherryPyサーバーに送信しています。 Androidのコードは次のように動作します:受信した長さが送信された長さと異なる

URL url = new URL("http://foo.bar/blabla"); 

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestProperty("Content-Type", "application/octet-stream"); 
conn.setDoOutput(true); 
conn.setFixedLengthStreamingMode(base64s.length()); 

OutputStream out = new BufferedOutputStream(conn.getOutputStream()); 
out.write(base64s.getBytes()); 

だから、あなたが送信したバイトの量がContent-Lengthヘッダ内のバイトの量に等しいと思います。私はこの実行したときただし、Pythonで、:

cl = cherrypy.request.headers['Content-Length'] 
rawbody = cherrypy.request.body.read() 

print "{} bytes, {}".format(len(rawbody), cl) 

を数字cllen(rawbody)は異なっています。

どのようにすることができますか?

+0

値は何ですか?そして、送信されたバイト数は? – greenapps

+1

忘れてしまった.close();? – greenapps

+0

@greenappsそれは確かにそれでした。あなたがそれを答えたら、私はそれを受け入れるでしょう。 –

答えて

0

ために、そのエンドストリームを何もしますので、ご使用のサーバーは、「クローズヘッダの」送信sould?

0

クライアントはたぶん、あなたはout.close();でストリームを閉じるのを忘れて、彼

関連する問題