Я создаю приложение на Android Studio, в котором я должен поддерживать синхронизацию курсов валют с внешним источником через объект JSON. Я последовал за this tutorial, который был предоставлен мне другим ответом на этом форуме. Источник кажется надежным. Тем не менее, я продолжаю получать NoClassDefError. Я поставил флаг, помеченный как // Exception в моем коде, чтобы показать вам, где происходит исключение. Обратите внимание, что я добавил httpclient-4.3-beta1.jar в качестве библиотеки, поэтому я не думаю, что это проблема зависимости. Я нашел темы по одной и той же проблеме, но они дают только объяснения и ответы. Это мой код. Любая помощь приветствуется! Спасибо.HTTP-запрос через Android Studio NoClassDefFoundError
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
public class LiveResponseDemo{
// essential URL structure is built using constants
public static final String ACCESS_KEY = "YOUR_ACCESS_KEY";
public static final String BASE_URL = "https://apilayer.net/api/";
public static final String ENDPOINT = "live";
// this object is used for executing requests to the (REST) API
//Exception
static CloseableHttpClient httpClient = HttpClients.createDefault();
public static void sendLiveRequest(){
// The following line initializes the HttpGet Object with the URL in order to send a request
HttpGet get = new HttpGet(BASE_URL + ENDPOINT + "?access_key=" + ACCESS_KEY);
try {
CloseableHttpResponse response = httpClient.execute(get);
HttpEntity entity = response.getEntity();
// the following line converts the JSON Response to an equivalent Java Object
JSONObject exchangeRates = new JSONObject(EntityUtils.toString(entity));
System.out.println("Live Currency Exchange Rates");
// Parsed JSON Objects are accessed according to the JSON resonse's hierarchy, output strings are built
Date timeStampDate = new Date((long)(exchangeRates.getLong("timestamp")*1000));
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String formattedDate = dateFormat.format(timeStampDate);
System.out.println("1 " + exchangeRates.getString("base") + " in GBP : " + exchangeRates.getJSONObject("rates").getDouble("GBP") + " (as of " + formattedDate + ")");
System.out.println("\n");
response.close();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Где вы разместили httpclient.jar и как файл jour gradle.build ищет модуль приложения? –
httpClient больше не является частью Android, лучше всего использовать http-соединение для использования URLConnection: http://developer.android.com/reference/org/apache/http/client/HttpClient.html –
Я попытаюсь использовать это спасибо вы! –