2015-11-28 3 views
0

Я уже много часов борется. Я пытаюсь сделать запрос на отправку с моего приложения для Android. Я понял, что я не могу просто сделать запрос из основного потока, поэтому я узнал, что могу поместить его в поток, исполняемый. Я поспешил за ответами, опробовав множество методов, которые использовали люди, которые работали для других, и никто из них не работал на меня. Один я вроде понял, был этот (не работает для меня):отправка заявки от android

package com.example.matt.event; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.util.ArrayList; 
import java.util.List; 


public class lokacije extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.lokacije); 
    thread.start(); 
} 

Thread thread = new Thread(new Runnable(){ 
    @Override 
    public void run() 
    { 
      HttpClient httpClient = new DefaultHttpClient(); 
      // replace with your url 
      HttpPost httpPost = new HttpPost("http://www.awesomeholidays.com/login.php"); 


      //Post Data 
      List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); 
      nameValuePair.add(new BasicNameValuePair("username", "123")); 
      nameValuePair.add(new BasicNameValuePair("password", "456")); 


      //Encoding POST data 
      try { 
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
      } catch (UnsupportedEncodingException e) { 
       Log.d("omg it doesn't work",e.toString()); 
       e.printStackTrace(); 
      } 

      //making POST request. 
      try { 
       HttpResponse response = httpClient.execute(httpPost); 
       // write response to log 
       Log.d("Http Post Response:", response.toString()); 
      } catch (ClientProtocolException e) { 
       // Log exception 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // Log exception 
       e.printStackTrace(); 

      } 
    } 
}); 
} 

Я позволил ему получить доступ ко Интернету так:

<uses-permission android:name="android.permission.INTERNET"/> 

стороне сервера сценариев API работ, а Я просто использую его в веб-приложении.

Может ли кто-нибудь указать мне в правильном направлении? Я не знаю. Где могла быть ошибка? Возможно, ошибка в моей градации? (Мне пришлось загружать http-библиотеки с apache.com и включать в мою градицию - пришлось добавить компиляцию зависимостей «org.apache.httpcomponents: httpclient: 4.5» и кучу packageOptions {

exclude 'META-INF/DEPENDENCIES' 

    exclude 'META-INF/NOTICE' 

    exclude 'META-INF/LICENSE' 

    exclude 'META-INF/LICENSE.txt' 

    exclude 'META-INF/NOTICE.txt' 

}) Есть ли простой способ? Также узнал о библиотеке okhttp, я собираюсь попытаться ее реализовать, но я действительно не очень хорошо разбираюсь в градиенте и импортирую зарубежные библиотеки.

Это то, что я получаю:

11-28 20:49:49.587 10450-10450/? D/dalvikvm: Late-enabling CheckJNI 
11-28 20:49:50.008 10450-10450/com.example.matic.eventer W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;) 
11-28 20:49:50.008 10450-10450/com.example.matic.eventer I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onSearchRequested 
11-28 20:49:50.008 10450-10450/com.example.matic.eventer W/dalvikvm: VFY: unable to resolve interface method 14051: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z 
11-28 20:49:50.008 10450-10450/com.example.matic.eventer D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
11-28 20:49:50.018 10450-10450/com.example.matic.eventer I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onWindowStartingActionMode 
11-28 20:49:50.018 10450-10450/com.example.matic.eventer W/dalvikvm: VFY: unable to resolve interface method 14055: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 
11-28 20:49:50.018 10450-10450/com.example.matic.eventer D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
11-28 20:49:50.238 10450-10450/com.example.matic.eventer I/dalvikvm: Could not find method android.view.ViewGroup.onRtlPropertiesChanged, referenced from method android.support.v7.widget.Toolbar.onRtlPropertiesChanged 
11-28 20:49:50.248 10450-10450/com.example.matic.eventer W/dalvikvm: VFY: unable to resolve virtual method 13952: Landroid/view/ViewGroup;.onRtlPropertiesChanged (I)V 
11-28 20:49:50.248 10450-10450/com.example.matic.eventer D/dalvikvm: VFY: replacing opcode 0x6f at 0x0007 
11-28 20:49:50.268 10450-10450/com.example.matic.eventer I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations 
11-28 20:49:50.268 10450-10450/com.example.matic.eventer W/dalvikvm: VFY: unable to resolve virtual method 402: Landroid/content/res/TypedArray;.getChangingConfigurations()I 
11-28 20:49:50.268 10450-10450/com.example.matic.eventer D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
11-28 20:49:50.278 10450-10450/com.example.matic.eventer I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType 
11-28 20:49:50.278 10450-10450/com.example.matic.eventer W/dalvikvm: VFY: unable to resolve virtual method 424: Landroid/content/res/TypedArray;.getType (I)I 
11-28 20:49:50.278 10450-10450/com.example.matic.eventer D/dalvikvm: VFY:replacing opcode 0x6e at 0x0002 
11-28 20:49:50.438 10450-10450/com.example.matic.eventer D/libEGL: loaded /system/lib/egl/libEGL_mali.so 
11-28 20:49:50.458 10450-10450/com.example.matic.eventer D/libEGL: loaded /system/lib/egl/libGLESv1_CM_mali.so 
11-28 20:49:50.458 10450-10450/com.example.matic.eventer D/libEGL: loaded /system/lib/egl/libGLESv2_mali.so 
11-28 20:49:50.498 10450-10454/com.example.matic.eventer D/dalvikvm: GC_CONCURRENT freed 198K, 9% free 9534K/10375K, paused 3ms+32ms, total 128ms 
11-28 20:49:50.518 10450-10450/com.example.matic.eventer D/OpenGLRenderer: Enabling debug mode 0 
11-28 20:49:54.722 10450-10450/com.example.matic.eventer E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
11-28 20:49:54.722 10450-10450/com.example.matic.eventer E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
11-28 20:49:56.514 10450-10583/com.example.matic.eventer D/Http Post Response:: [email protected] 

Пожалуйста, помогите. :) Вся помощь очень ценится.

+0

Проверить это http://stackoverflow.com/questions/2938502/sending-post-data-in-android http://stackoverflow.com/questions/31552242/sending-http- post-request-with-android – RAP

+0

Узнайте об библиотеке волейбола [в этом замечательном учебнике!] (http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/) Это облегчит вам жизнь. :) – rafid059

ответ

0

Не уверен, что произошла ошибка.
За все время от времени:

Есть ли простой способ? Также узнали о библиотеке okhttp,

Comparison of Android Networking Libraries: OkHTTP, Retrofit, Volley - прекрасное сообщение, которое сравнивает все доступные сетевые библиотеки по каждому фактору. Никогда не думайте о том, чтобы создавать заголовки, тело и разбирать ответы самостоятельно. Также повторите попытку, отменить-текущие запросы, кеширование и т. Д., Все это очень легко сделать через библиотеки. И дооснащение вершин на каждом факторе. Мы используем его, и это хорошо. Он поддерживает JSON, XML, Jackson, Moshi, Protobuf, а также форматы данных Wire. Все, что вам нужно сделать, - создать класс Body model и модели ответов. Взгляните на Retrofit beginner doc.

0

OK. Прежде всего, спасибо всем за ответ. :) Это очень помогло. Я просто импортировал библиотеку okhttp в проект, и теперь я буду работать с этим. Кажется, достаточно легко. Еще раз спасибо.

Возможно, код будет у вас всех!

С уважением, Matic

Смежные вопросы