我正在开发android。我正在使用HttpPost发送用户名和密码并获取用户ID。
这是我的操作代码:
HttpClient hc = new DefaultHttpClient();
HttpPost post = new HttpPost("http://192.168.1.214/sample/dologin.php id="+strUID+ "&password="+strPass);
HttpResponse rp = hc.execute(post);
if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String userID = EntityUtils.toString(rp.getEntity());
Log.v("Login response", "" + userID);
}
这是我在DDMS中的输出
Login response(686): ([{"id":"5"}]);
但结果我需要5个。所以我可以在下一次操作中使用这个结果。请告诉我如何从字符串中提取5([{“id”:“5”}]);
提前谢谢。
答案 0 :(得分:2)
public void postData(String strUID,String strPass) {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.214/sample/dologin.php");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id",strUID ));
nameValuePairs.add(new BasicNameValuePair("password",strPass ));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
ResponseHandler<String> responseHandler=new BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
JSONObject response=new JSONObject(responseBody);
response.get('id');
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
答案 1 :(得分:1)
我似乎将您的答案打包到JSONObject中。 要处理此响应,只需使用org.json包并将您的答案解析为json。 提取答案的最简单方法是:
JSONObject myJson = new JSONObject(userID);
String myID = myJson.get("id");
// or myJson.getString("id");
我也不会使用POST方法而是使用GET方法,因为你没有通过GET调用ressource。
答案 2 :(得分:1)
您可以在下面使用JSON是简单的代码..
StringBuffer sb = new StringBuffer(userID);
String s = sb.substring(sb.indexOf("["),sb.lastIndexOf("]")+1);
JSONArray ja = new JSONArray(s);
JSONObject jo = new JSONObject();
jo = (ja.getJSONObject(0));
String id = jo.getString("id");
现在你可以使用id变量..