簡體   English   中英

不確定我的Android應用是否正在發送有效的POST請求

[英]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&param2=b&param3=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&param2=b&param3=c
0

更改為此。 將輸出分塊似乎是一個問題

URL url = new URL(imageRequests[0].getUrl());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
String urlParameters = "param1=value&param2=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM