我使用web服务创建了android身份验证的项目。我使用post和json解析来获取数据,我发送到web服务用户名和密码进行身份验证,我想在pesponse数据中选择任何信息但是我没有成功地采取了什么我想我认为我犯了一些错误或忘记了什么。我想登录到网络身份验证和身份验证后,如何采取我想要的具体信息。
class Post extends AsyncTask<Void, Void, Void>{
// Post tan önce yapılacak işlemler. Yükleniyor yazısını(ProgressDialog) gösterdik.
JSONObject veri_json;
JSONObject jsonobj;
protected void onPreExecute() {
pDialog=new ProgressDialog(OgrenciBilgiSistemi.this);
pDialog.setMessage("Yükleniyor");
pDialog.setIndeterminate(true);
pDialog.setCancelable(true);// ProgressDialog u iptal edilemez hale getirdik.
pDialog.show();
};
@Override
protected Void doInBackground(Void... unused) {// Arka Planda yapılacaklar. Yani Post işlemi
//Post edilecek değişkenleri ayarliyoruz.
List<NameValuePair> params=new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("login", og_no.getText().toString()));
params.add(new BasicNameValuePair("password", og_sifre.getText().toString()));
params.add(new BasicNameValuePair("Accept", "application/json"));
params.add(new BasicNameValuePair("Content-type", "application/json"));
//PostClass daki httpPost metodunu çağırdık.Gelen string değerini aldık
veri_string=post.httpPost(url, "POST", params, 2000);
try {
////gelen veri_string değerini json arraye çeviriyoruz.
//try içinde yapmak zorunlu çıkabilecek bir sorunda uygulamanın patlamaması için
veri_json=new JSONObject(veri_string);
} catch (JSONException e) {
e.printStackTrace();
}
// gelen veriyi log tuttuk
Log.d("HTTP POST CEVAP:",""+ veri_string);
return null;
}
我有Post Class
try {
if (method == "POST") {
HttpParams httpParameters = new BasicHttpParams();
int timeout1 = time;
int timeout2 = time;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeout1);
HttpConnectionParams.setSoTimeout(httpParameters, timeout2);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
veri = httpEntity.getContent();
} else if (method == "GET") {
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
veri = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
veri, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
veri.close();
veri_string = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Hata " + e.toString());
}
return veri_string; // Aldığımız cevabın string halini geri dönüyoruz
}
我接受了这个问题
答案 0 :(得分:0)
您可以在onPostExecute中解析日期 首先创建JSONobject myObject = new JSONobject(来自服务器的json字符串) 然后你可以通过调用我的myObject.getJSONArray(&#34;数组的名称&#34;),myObject.getJSONObject(&#34;对象名称&#34;)来提取你的数组或内部json对象。 然后从这些对象和数组中,您可以通过调用getString getInt等适当的方法来提取值。 解压缩所有这些信息后,将这些值存储在SharedPreferences中,以便在应用中的任何位置使用。 JSON解析和SharedPreferences的链接 JSON parsing