今天我第一次尝试发送带有JSON的POST请求来保存一些数据,而我却无法这样做。 我的应用程序通过登录,然后保存,修改和删除数据。它已经在iOS中完成了,但由于我是Android新手,我不知道该怎么做。 这是我的POST功能:
public String POST(String targetURL, String urlParameters, String user, String pwd) {
URL url;
String u = targetURL;
HttpURLConnection connection = null;
try {
// Create connection
// u=URLEncoder.encode(u, "UTF-8");
url = new URL(u);
connection = (HttpURLConnection) url.openConnection();
// cambiarlo luego al usuario q esta logeado
String login = user + ":" + pwd;
String encoding = new String(org.apache.commons.codec.binary.Base64.encodeBase64(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(login)));
connection.setRequestMethod("POST");
connection.setRequestProperty("Authorization", "Basic " + encoding);
connection.setRequestProperty("Content-Type", "plain/text");// hace q sirva con el string de json
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setReadTimeout(120000);
// Send request
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
this.setResponseCode(connection.getResponseCode());
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
上面的方法是使用Asynctask执行的,即使我使用它来使用Spring安全性登录,它也可以工作,甚至我可以为内部使用保存用户名,密码和密钥令牌。 我不知道如果我需要将标记放在标题或其他内容中,因为我已经这样做了,没有任何积极的结果。 我想我执行此操作所需的唯一权限是互联网权限,因此在我的清单文件中我指定了该权限。 我对这个问题发疯了,请帮忙! 提前谢谢。
修改
对不起,伙计们,我对这种提问方式有点新意,而且还不是英语母语人士:P 我发送请求后收到的输出是处理登录到Web应用程序的页面的HTML ...我需要像json响应或类似的东西来确保请求被正确保存
答案 0 :(得分:0)
尝试处理您的Cookie
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
这应该是一个单身人士。