我正在向我的服务器发送POST请求,只是为了检查我的连接是否正常工作,但它没有从我的应用程序中恢复任何数据。我已经尝试了所有的东西,这些是我的结论:1。查询以适当的方式生成(我打印出来并且看起来不错)。 2.代码不会抛出任何错误。 3.代码一直运行到最后。
这是我的代码:
public static void addLocation(final Location location, final String title, final String author, final String text, final boolean anonymous){
Thread nt = new Thread(){
@Override
public void run(){
try{
Map<String, String> parameters = new HashMap<String, String>();
String slocation = location.getLatitude()+"@"+location.getLongitude();
String sanonymous;
if(anonymous){
sanonymous = "true";
}else{
sanonymous = "false";
}
parameters.put("location", slocation);
parameters.put("author", author);
parameters.put("title", title);
parameters.put("text", text);
parameters.put("anonymous", sanonymous);
URL urlToRequest = new URL("http://mashiron.xyz/_03z/pia/proc.php");
HttpURLConnection urlConnection =
(HttpURLConnection) urlToRequest.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
String postParameters = createQueryStringForParameters(parameters);
urlConnection.setFixedLengthStreamingMode(
postParameters.getBytes().length);
PrintWriter out = new PrintWriter(urlConnection.getOutputStream());
// System.out.println(receiveResponse(urlConnection));
out.close();
System.out.println("1# "+postParameters);
}catch(Exception e){
System.out.println("2");
e.printStackTrace();
}
}
};
nt.start();
}
这是我用来从hashmap生成查询的工具,但正如我所说,我认为问题不在那里。
public static String createQueryStringForParameters(Map<String, String> parameters) {
StringBuilder parametersAsQueryString = new StringBuilder();
if (parameters != null) {
boolean firstParameter = true;
for (String parameterName : parameters.keySet()) {
if (!firstParameter) {
parametersAsQueryString.append(PARAMETER_DELIMITER);
}
parametersAsQueryString.append(parameterName)
.append(PARAMETER_EQUALS_CHAR)
.append(URLEncoder.encode(
parameters.get(parameterName)));
firstParameter = false;
}
}
System.out.println("4");
return parametersAsQueryString.toString();
}
非常感谢!
答案 0 :(得分:0)
您已经完成了所有权利,但您忘记将内容写入OutputStream
。打开out
流
out.write(postParameters);