У меня есть метод HTTP Post и Get. Сначала метод post Http post явно работает, и аутентификация прошла успешно, но на втором этапе я хочу взять данные о том, что ı хочет выбрать, к сожалению, объект Json возвращает null.Запрос метода Http GET для Android
После основного кода:
@Override
protected Void doInBackground(Void... unused) {
List<NameValuePair> params=new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("login","userno"));
params.add(new BasicNameValuePair("password", "pass"));
params.add(new BasicNameValuePair("Accept","application/json"));
params.add(new BasicNameValuePair("Content-type","x-www-form-urlencoded; charset=UTF-8"));
veri_string=post.httpPost(url, "GET", params, 2000);
try {
veri_json=new JSONObject(veri_string);
} catch (Exception e) {
e.printStackTrace();
}
Log.d("HTTP POST CEVAP",""+veri_json);
return null;
}
Мои сообщения Класс Код:
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, HTTP.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
МОЯ веб апи URL: http://ogrenci.izmir.edu.tr/api/ogrenciders
{ "Id": 2602, "OgrenciNo": «OgrenciAdiSoyadi»: null, «OgretimYili»: 2014, «OgretimDonemi»: 1, «AldigiDersIdNo»: 0.0, «AldigiSube»: null, «OgretimYiliAdi»: «2014-2015», «OgretimDonemiAdi»: «Güz Dönemi "" DersKodu ":" CEN 431 "," DersAdi ":" VERİ İLETİŞİMİ "," Sinif ": 4," SinifAdi ":" 4. sınıf», "Vize1": 0, "Vize2": 0, "Vize3": 0, "Vize4": 0, "Vize5": 0, "Vize6": 0, "Vize7": 0, "Vize8": 0 , «Vize9»: 0, «Vize10»: 0, «Final»: 0, «Butunleme»: 0, «EkSinav»: 0, «Vize1Adi»: «Vize 70», «Vize2Adi»: «Quiz 64" , «Vize3Adi»: "Назначение
И, наконец, я беру подобную ошибку
Спасибо за ответ @TooManyEduardos Я новый разработчик в android I, насколько я понимаю, я должен переменный (строка) на postExecute, и вы можете дать мне конкретный экземпляр – Mercur
, и проблема у вас в том, что на конец doInBackground вы возвращаете null, а это означает, что вы ничего не делаете с результатом. Поэтому это зависит от того, что вы хотите сделать, чтобы использовать это, но если вы хотите использовать результат doInBackground где-то в другом месте, вам нужно вернуть его в класс и поток вызывающего, и поскольку вы используете Asynctask, Самый простой способ сделать это - использовать onPostExecute – TooManyEduardos
Попробуйте этот веб-сайт: http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html#concurrency_asynchtask – TooManyEduardos