我正试图从我的android应用程序发送一些数据到运行Flask代码的服务器。我使用HTTPUrlConnection
向Flask服务器发出POST
请求。我已经能够使用Flask创建一个restapi,但是我不确定为什么Java到Python的通信不起作用。我从服务器上得到了以下错误"POST /signUp HTTP/1.1" 400 -
,我无法从中得到什么好处(在Flask中启用了调试)。我应该如何将JSON数据传递到我的服务器,我的Flask代码应该如何解释这一点?在
我的Java代码是:
URL url = new URL(url);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoInput(true);
connection.setDoOutput(true);
OutputStream stream = connection.getOutputStream();
writer = new DataOutputStream(stream);
Log.d("WARN", getQuery(params));
// The LogCat prints out data like:
// ID:test,Email:test@gmail.com,Pwd:test
writer.writeBytes(getQuery(params));
writer.flush();
writer.close();
stream.close();
// getQuery function aims to create a JSON string to send to the Flask server.
private String getQuery(List<Pair<String, String>> params)
{
StringBuilder result = new StringBuilder();
boolean first = true;
for (Pair<String, String> pair : params)
{
if (first)
first = false;
else
result.append(",");
result.append(pair.first);
result.append(":");
result.append(pair.second);
}
return result.toString();
}
我的服务器端代码是:
^{pr2}$
这不是一个JSON字符串,因此在服务器端flask无法反序列化它。您的JSON应该如下所示:
^{2}$顺便说一句,在生成JSON字符串时,您可以使用一些更高级的fluent API-s来生成JSON,比如jackson或org.json API。在
相关问题 更多 >
编程相关推荐