我对Android编程完全陌生。我遇到了以下问题 - 我想验证使用该应用程序的用户的凭据。为此,我想使用POST方法将登录详细信息发送到服务器。从那里我想以JSON格式获得响应。我不知道如何收到回复。我正在使用Java进行服务器端编程。
P.S。我稍后会处理安全问题。 以下是我的Android代码。我知道这是一团糟..请帮忙。
HttpURLConnection连接; OutputStreamWriter request = null;
URL url = null;
String response = null;
String parameters = "username="+mUsername+"&password="+mPassword;
try
{
url = new URL("address");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.connect();
request = new OutputStreamWriter(connection.getOutputStream());
request.write(parameters);
request.flush();
request.close();
String line = "";
InputStreamReader isr = new InputStreamReader(connection.getInputStream());
BufferedReader reader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line);
}
// Response from server after login process will be stored in response variable.
response = sb.toString();
// You can perform UI operations here
Toast.makeText(this,"Message from Server: \n"+ response, 0).show();
isr.close();
reader.close();
}
catch(IOException e)
{
// Error
return -1;
}
答案 0 :(得分:1)
您可以使用一个开源类,您可以轻松浏览代码以查看其工作原理。实际上有很多开源库可以做到这一点,但在我看来,以下是最干净,最容易使用的。
您的代码可能看起来像这样:
Map<String, String> params = new HashMap<String, String>();
params.put("username", mUsername);
params.put("password", mPassword);
String response = HttpRequest.post(url).form(params).body();
修改强>
我的原始答案包括params映射到post
方法会发送请求作为POST但是url中的params。更正后的版本(form
方法)会在体内发送参数。
答案 1 :(得分:0)
您可以将json响应转换为JSONObject类。
看看这个应用程序,代码非常简单。
@Override
public List<User> getRanking() {
final List<User> result = new ArrayList<User>();
String url = "http://quiz-exmo.rhcloud.com/rest/user/ranking/";
String json = HttpUtil.doGet(url);
try {
final JSONObject resultJsonObject = new JSONObject(json);
final JSONArray jsonArray = resultJsonObject.getJSONArray("users");
for (int index = 0, total = jsonArray.length(); index < total; index++) {
final JSONObject jsonObject = jsonArray.getJSONObject(index);
final User user = new User();
user.name = jsonObject.getString("name");
user.email = jsonObject.getString("email");
user.score = jsonObject.getInt("points");
result.add(user);
}
} catch (JSONException e) {
throw new RuntimeException(e);
}
return result;
}