[英]Why is volley for Android not sending my parameters in my GET/POST requests?
[英]Unsure if my Android app is sending valid POST requests
我有一個應用程序,目前我只是通過POST請求將一些虛擬數據發送到Flask服務器。 Flask服務器看不到發布數據。 當我將其發送到sinatra服務器時,發布數據沒有問題。
Android代碼:
URL url = new URL(imageRequests[0].getUrl());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
String urlParameters = "param1=a¶m2=b¶m3=c";
System.out.println(urlParameters);
urlConnection.setDoOutput(true);
urlConnection.setChunkedStreamingMode(0);
DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream ());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
燒瓶代碼:
@app.route('/', methods=['POST'])
def submit():
print request.form
return "Uploaded"
燒瓶輸出:
Loading from savePath test.tree
* Running on http://0.0.0.0:5000/
ImmutableMultiDict([])
10.100.85.69 - - [25/Jul/2014 17:09:07] "POST / HTTP/1.1" 200 -
Sinatra代碼:
post '/' do
puts params
"Uploaded"
end
Sinatra輸出:
== Sinatra/1.4.5 has taken the stage on 4567 for development with backup from WEBrick
[2014-07-25 17:07:27] INFO WEBrick::HTTPServer#start: pid=18674 port=4567
{"param1"=>"a", "param2"=>"b", "param3"=>"c"}
10.100.85.69 - - [25/Jul/2014 17:07:35] "POST / HTTP/1.1" 200 12 0.0053
10.100.85.69 - - [25/Jul/2014:17:07:34 BST] "POST / HTTP/1.1" 200 12
- -> /
我真的很困惑為什么Sinatra獲取帖子數據,但是flask沒有。 我唯一的猜測是,來自android的POST請求不太正確,而sinatra對此更為寬容。
是這樣嗎
編輯:netcat通過端口偵聽輸出
POST / HTTP/1.1
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.4; Nexus 7 Build/KTU84P)
Host: 10.100.85.210:5000
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked
1b
?param1=a¶m2=b¶m3=c
0
更改為此。 將輸出分塊似乎是一個問題
URL url = new URL(imageRequests[0].getUrl());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
String urlParameters = "param1=value¶m2=value";
System.out.println(urlParameters);
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Length", String.valueOf(urlParameters.getBytes().length));
urlConnection.setRequestMethod("POST");
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(urlParameters);
writer.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.