в gradle прописано:
android {
compileSdkVersion 23
buildToolsVersion "25.0.0"
useLibrary 'org.apache.http.legacy'
dependencies {
compile 'org.apache.httpcomponents:httpcore:4.4.5'
в манифесте:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
Не могу получить данные.
HttpClient httpclient = new DefaultHttpClient();
HttpPost http = new HttpPost(myURL);
List nameValuePairs = new ArrayList(2);
nameValuePairs.add(new BasicNameValuePair("login", loginMap.get(0)));
nameValuePairs.add(new BasicNameValuePair("password", loginMap.get(1)));
try {
http.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
String response = (String) httpclient.execute(http, new BasicResponseHandler());
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
Вываливается ошибка:
12-26 12:31:49.114 13673-13673/com.lovelinux.root.tmaxim E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.lovelinux.root.tmaxim, PID: 13673
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147)
at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
at java.net.InetAddress.getAllByName(InetAddress.java:215)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:142)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:365)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:658)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:632)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:621)
at com.lovelinux.root.tmaxim.MainActivity$1$override.onClick(MainActivity.java:94)
at com.lovelinux.root.tmaxim.MainActivity$1$override.access$dispatch(MainActivity.java)
at com.lovelinux.root.tmaxim.MainActivity$1.onClick(MainActivity.java:0)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
class httpQUERY extends AsyncTask<Void, Void, Void> {
String myURL = "https://адрес";
String params ;
byte[] data = null;
InputStream is = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... paramss) {
if (!loginMap.isEmpty()) {
params = "login=" + loginMap.get(0) + "&password=" + loginMap.get(1);
}else{
System.out.println("Empty array");
return null;
}
HttpClient httpclient = new DefaultHttpClient();
HttpPost http = new HttpPost(myURL);
List nameValuePairs = new ArrayList(2);
nameValuePairs.add(new BasicNameValuePair("login", loginMap.get(0)));
nameValuePairs.add(new BasicNameValuePair("password", loginMap.get(1)));
try {
http.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
String response = (String) httpclient.execute(http, new BasicResponseHandler());
System.out.println(response);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {//Выполняется после doInBackground
super.onPostExecute(result);
System.out.println("I am here");
}
}
NetworkOnMainThreadException
свидетельствует о том, что Вы пытаетесь обратиться к веб-ресурсу из UI-потока, чего делать нельзя.
Все запросы к интернету нужно осуществлять в потоках, отличных от UI-потока. В самом примитивном случае можно использовать AsyncTask
, но, вообще говоря, лучше использовать библиотеки, которые из коробки могут выполнять запросы не в UI-потоке (OkHttp, RoboSpice и т.п.).
UPD: Если Вы получаете данное исключение и используете AsyncTask
, то проверьте, не вызываете ли Вы напрямую метод doInBackground(...)
, если вызываете – замените строку вызова этого метода на task.execute(...)
, где task
– экземпляр класса AsyncTask
.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Отправляю GET запрос и приходит в log такой ответ onResponse: comexample
Какими компонентами можно реализовать подобный интерфейс и какие свойства этих компонентов использовать? Прежде всего интересует реализация...
Вечер добрый, у меня стоит задача: надо поставить лайк под записью, пишу вот этот код:
Создаю десктоп приложение на джавеДля хранение данных решил использовать H2 бд