2015-04-02 175 views
0

我想從android發佈到我的PHP頁面,並且我遇到了一些問題。我讀了很多arcticles並將代碼編成波紋管。點擊按鈕不會給出任何結果,數據不會更改。所以你可以幫我解決我犯的錯誤。android不會發送HTTP POST請求

package ktl.myapplication; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

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.ResponseHandler; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity { 

    Button btnOk; 
    /**Вызывается при первом создании */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { super.onCreate(savedInstanceState); 
     // загрузка layout 
     setContentView(R.layout.activity_main); 
     btnOk = (Button) findViewById(R.id.btn1); 

     OnClickListener oclBtnOk = new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       class RequestTask extends AsyncTask<String, String, String> { 

        @Override 
        protected String doInBackground(String... params) { 

         try { 
          //создаем запрос на сервер 
          DefaultHttpClient hc = new DefaultHttpClient(); 
          ResponseHandler<String> res = new BasicResponseHandler(); 

          //он у нас будет посылать post запрос 
          HttpPost postMethod = new HttpPost("http://shkz3.info/switch.php"); 
          List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
          nameValuePairs.add(new BasicNameValuePair("PAR", "SVET1")); 
          //собераем их вместе и посылаем на сервер 
          postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

         } catch (Exception e) { 
          System.out.println("Exp=" + e); 
         } 
         return null; 
        } 
       } 
      } 
     }; 
     btnOk.setOnClickListener(oclBtnOk); 
    } 

} 

和logcat的

04-02 11:23:44.575 32216-32216/ktl.myapplication D/dalvikvm﹕ Zygote::ForkAndSpecialize : 0 
04-02 11:23:44.578 32216-32216/ktl.myapplication D/dalvikvm﹕ zygote get new systemTid : 32216 
04-02 11:23:44.578 32216-32216/ktl.myapplication D/dalvikvm﹕ Late-enabling CheckJNI 
04-02 11:23:44.578 32216-32220/ktl.myapplication D/dalvikvm﹕ threadid=2: interp stack at 0x5ba49000 
04-02 11:23:44.578 32216-32220/ktl.myapplication D/dalvikvm﹕ init ref table 
04-02 11:23:44.578 32216-32220/ktl.myapplication D/dalvikvm﹕ init mutex 
04-02 11:23:44.579 32216-32221/ktl.myapplication D/dalvikvm﹕ threadid=3: interp stack at 0x5bb69000 
04-02 11:23:44.579 32216-32221/ktl.myapplication D/dalvikvm﹕ init ref table 
04-02 11:23:44.579 32216-32221/ktl.myapplication D/dalvikvm﹕ init mutex 
04-02 11:23:44.579 32216-32221/ktl.myapplication D/dalvikvm﹕ Elevating priority from 0 to -8 
04-02 11:23:44.579 32216-32216/ktl.myapplication D/jdwp﹕ prepping for JDWP over ADB 
04-02 11:23:44.579 32216-32222/ktl.myapplication D/dalvikvm﹕ threadid=4: interp stack at 0x5ecaa000 
04-02 11:23:44.579 32216-32222/ktl.myapplication D/dalvikvm﹕ init ref table 
04-02 11:23:44.579 32216-32222/ktl.myapplication D/dalvikvm﹕ init mutex 
04-02 11:23:44.579 32216-32222/ktl.myapplication D/jdwp﹕ JDWP: thread running 
04-02 11:23:44.580 32216-32222/ktl.myapplication D/jdwp﹕ trying to receive file descriptor from ADB 
04-02 11:23:44.625 32216-32228/ktl.myapplication D/dalvikvm﹕ threadid=9: interp stack at 0x5f43e000 
04-02 11:23:44.625 32216-32228/ktl.myapplication D/dalvikvm﹕ init ref table 
04-02 11:23:44.625 32216-32228/ktl.myapplication D/dalvikvm﹕ init mutex 
04-02 11:23:44.625 32216-32229/ktl.myapplication D/dalvikvm﹕ threadid=10: interp stack at 0x5f55c000 
04-02 11:23:44.625 32216-32229/ktl.myapplication D/dalvikvm﹕ init ref table 
04-02 11:23:44.625 32216-32229/ktl.myapplication D/dalvikvm﹕ init mutex 
04-02 11:23:44.655 32216-32222/ktl.myapplication D/jdwp﹕ received file descriptor 47 from ADB 
04-02 11:23:44.669 32216-32216/ktl.myapplication V/SettingsProviderInterface﹕ invalidate [system]: current 244 != cached 0 
04-02 11:23:44.670 32216-32216/ktl.myapplication D/ActivityThread﹕ hoder:[email protected],provider,holder.Provider:[email protected] 
04-02 11:23:44.673 32216-32216/ktl.myapplication D/asset﹕ AssetManager-->addDefaultAssets CIP path not exsit! 
04-02 11:23:44.676 32216-32216/ktl.myapplication D/Proxy﹕ setHttpRequestCheckHandler 
04-02 11:23:44.678 32216-32216/ktl.myapplication D/dalvikvm﹕ open_cached_dex_file : /data/app/ktl.myapplication-2.apk /data/dalvik-cache/[email protected]@[email protected] 
04-02 11:23:44.680 32216-32216/ktl.myapplication D/ActivityThread﹕ BIND_APPLICATION handled : 0/AppBindData{appInfo=ApplicationInfo{4315e3e8 ktl.myapplication}} 
04-02 11:23:44.680 32216-32216/ktl.myapplication V/ActivityThread﹕ Handling launch of ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} 
04-02 11:23:44.747 32216-32216/ktl.myapplication V/ActivityThread﹕ ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}}: [email protected], appName=ktl.myapplication, pkg=ktl.myapplication, comp={ktl.myapplication/ktl.myapplication.MainActivity}, dir=/data/app/ktl.myapplication-2.apk 
04-02 11:23:44.749 32216-32216/ktl.myapplication D/dalvikvm﹕ create interp thread : stack size=128KB 
04-02 11:23:44.749 32216-32216/ktl.myapplication D/dalvikvm﹕ create new thread 
04-02 11:23:44.749 32216-32216/ktl.myapplication D/dalvikvm﹕ new thread created 
04-02 11:23:44.749 32216-32216/ktl.myapplication D/dalvikvm﹕ update thread list 
04-02 11:23:44.750 32216-32230/ktl.myapplication D/dalvikvm﹕ threadid=11: interp stack at 0x5f726000 
04-02 11:23:44.750 32216-32230/ktl.myapplication D/dalvikvm﹕ init ref table 
04-02 11:23:44.750 32216-32230/ktl.myapplication D/dalvikvm﹕ init mutex 
04-02 11:23:44.750 32216-32230/ktl.myapplication D/dalvikvm﹕ threadid=11: created from interp 
04-02 11:23:44.750 32216-32216/ktl.myapplication D/dalvikvm﹕ start new thread 
04-02 11:23:44.750 32216-32230/ktl.myapplication D/dalvikvm﹕ threadid=11: notify debugger 
04-02 11:23:44.750 32216-32230/ktl.myapplication D/dalvikvm﹕ threadid=11 (LaunchIconThemeResource): calling run() 
04-02 11:23:44.757 32216-32216/ktl.myapplication D/asset﹕ AssetManager-->addDefaultAssets CIP path not exsit! 
04-02 11:23:44.800 32216-32216/ktl.myapplication D/jiayh2﹕ LaunchIconThemeResourcegetDrawable packageName:ktl.myapplication asetfile:null 
04-02 11:23:44.801 32216-32216/ktl.myapplication D/jiayh2﹕ LaunchIconThemeResourcegetDrawable packageName:ktl.myapplication asetfile:null 
04-02 11:23:44.803 32216-32216/ktl.myapplication D/jiayh2﹕ LaunchIconThemeResourcegetDrawable packageName:ktl.myapplication asetfile:null 
04-02 11:23:44.806 32216-32216/ktl.myapplication D/jiayh2﹕ LaunchIconThemeResourcegetDrawable packageName:ktl.myapplication asetfile:null 
04-02 11:23:44.807 32216-32216/ktl.myapplication D/jiayh2﹕ LaunchIconThemeResourcegetDrawable packageName:ktl.myapplication asetfile:null 
04-02 11:23:44.809 32216-32216/ktl.myapplication V/ActivityThread﹕ Performing resume of ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} finished=false 
04-02 11:23:44.809 32216-32216/ktl.myapplication D/ActivityThread﹕ ACT-AM_ON_RESUME_CALLED ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} 
04-02 11:23:44.809 32216-32216/ktl.myapplication V/ActivityThread﹕ Resume ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} started activity: false, hideForNow: false, finished: false 
04-02 11:23:44.854 32216-32216/ktl.myapplication V/PhoneWindow﹕ DecorView setVisiblity: visibility = 4 ,Parent =null, this =com.android.internal.policy.impl.PhoneWindow$DecorView{4316c030 I.E..... R.....ID 0,0-0,0} 
04-02 11:23:44.968 32216-32216/ktl.myapplication V/ActivityThread﹕ Resuming ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} with isForward=true 
04-02 11:23:44.968 32216-32216/ktl.myapplication V/PhoneWindow﹕ DecorView setVisiblity: visibility = 0 ,Parent =ViewRoot{43179d90 ktl.myapplication/ktl.myapplication.MainActivity,ident = 0}, this =com.android.internal.policy.impl.PhoneWindow$DecorView{4316c030 V.E..... R.....ID 0,0-0,0} 
04-02 11:23:44.968 32216-32216/ktl.myapplication V/ActivityThread﹕ Scheduling idle handler for ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} 
04-02 11:23:44.969 32216-32216/ktl.myapplication D/ActivityThread﹕ ACT-LAUNCH_ACTIVITY handled : 0/ActivityRecord{4315fbe8 [email protected] {ktl.myapplication/ktl.myapplication.MainActivity}} 
04-02 11:23:44.971 32216-32216/ktl.myapplication D/jiayh2﹕ FontThemeManager createThemeFont typefacetype=2, curfontpath=/system/fonts/DroidSansFallback.ttf 
04-02 11:23:44.971 32216-32216/ktl.myapplication D/jiayh2﹕ FontThemeManager createThemeFont typefacetype=2, curfontpath=/system/fonts/DroidSansFallback.ttf 
04-02 11:23:44.971 32216-32216/ktl.myapplication D/jiayh2﹕ FontThemeManager createThemeFont typefacetype=2, curfontpath=/system/fonts/DroidSansFallback.ttf 
04-02 11:23:45.040 32216-32216/ktl.myapplication D/IMGSRV﹕ mtk_gralloc_debug_check:43: g_gr_dbg=0 v=-1 
04-02 11:23:45.040 32216-32216/ktl.myapplication D/IMGSRV﹕ mtk_gralloc_debug_check:43: g_gr_dbg=0 v=-1 
04-02 11:23:45.059 32216-32216/ktl.myapplication D/GraphicBuffer﹕ create handle(0x604a6910) (w:1088, h:1920, f:1) 
04-02 11:23:45.063 32216-32216/ktl.myapplication D/OpenGLRenderer﹕ Enabling debug mode 0 
04-02 11:23:45.064 32216-32216/ktl.myapplication D/GraphicBuffer﹕ create handle(0x60cd26b0) (w:1792, h:1984, f:1) 
04-02 11:23:45.071 32216-32216/ktl.myapplication D/OpenGLRenderer﹕ setViewport 1080x1920 <0x604a6a38> 
04-02 11:23:45.073 32216-32216/ktl.myapplication V/InputMethodManager﹕ onWindowFocus: null softInputMode=288 first=true flags=#1810100 
04-02 11:23:45.073 32216-32216/ktl.myapplication V/InputMethodManager﹕ START INPUT: com.android.internal.policy.impl.PhoneWindow$DecorView{4316c030 V.E..... R.....ID 0,0-1080,1920} ic=null [email protected] controlFlags=#104 
04-02 11:23:46.466 32216-32216/ktl.myapplication I/View﹕ Touch down dispatch to android.widget.Button{43171f10 VFED..C. ........ 191,48-425,192 #7f08003f app:id/btn1}, event = MotionEvent { action=ACTION_DOWN, id[0]=0, x[0]=117.71414, y[0]=76.89589, Xw[0]=16.0, Yw[0]=16.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=56834756, downTime=56834756, deviceId=3, source=0x1002 } 
04-02 11:23:46.487 32216-32216/ktl.myapplication D/GraphicBuffer﹕ create handle(0x61bf4b60) (w:1088, h:1920, f:1) 
04-02 11:23:46.570 32216-32216/ktl.myapplication I/View﹕ Touch up dispatch to android.widget.Button{43171f10 VFED..C. ...P.... 191,48-425,192 #7f08003f app:id/btn1}, event = MotionEvent { action=ACTION_UP, id[0]=0, x[0]=112.71878, y[0]=74.89693, Xw[0]=32.0, Yw[0]=32.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=56834860, downTime=56834756, deviceId=3, source=0x1002 } 
04-02 11:23:46.589 32216-32216/ktl.myapplication D/GraphicBuffer﹕ create handle(0x5f93dc58) (w:1088, h:1920, f:1) 
04-02 11:23:48.835 32216-32216/ktl.myapplication I/View﹕ Touch down dispatch to android.widget.Button{43171f10 VFED..C. ........ 191,48-425,192 #7f08003f app:id/btn1}, event = MotionEvent { action=ACTION_DOWN, id[0]=0, x[0]=131.7012, y[0]=108.87923, Xw[0]=16.0, Yw[0]=16.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=56837124, downTime=56837124, deviceId=3, source=0x1002 } 
04-02 11:23:48.869 32216-32216/ktl.myapplication D/GraphicBuffer﹕ create handle(0x61a99778) (w:1088, h:1920, f:1) 
04-02 11:23:49.127 32216-32216/ktl.myapplication I/View﹕ Touch up dispatch to android.widget.Button{43171f10 VFED..C. ...P.... 191,48-425,192 #7f08003f app:id/btn1}, event = MotionEvent { action=ACTION_UP, id[0]=0, x[0]=131.7012, y[0]=108.87923, Xw[0]=32.0, Yw[0]=32.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=56837417, downTime=56837124, deviceId=3, source=0x1002 } 
04-02 11:23:49.128 32216-32216/ktl.myapplication V/SettingsProviderInterface﹕ from settings cache , name = sound_effects_enabled , value = 0 

有,我曾經

public class MainActivity extends Activity { 

    public String login; 
    public String pass; 
    private ProgressDialog dialog; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     login = "PAR"; 


    } 

    public void svet1(View view) { 
     //тут указываем куда будем конектится, для примера я привел удаленных хост если у вас не получилось освоить wamp (: 

     pass = "SVET1"; 
     post(); 
    } 
    public void post() { 
     HttpClient httpClient = new DefaultHttpClient(); 
     // replace with your url 
     HttpPost httpPost = new HttpPost("www.shkz3.info/switch.php"); 


     //Post Data 
     List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); 
     nameValuePair.add(new BasicNameValuePair("PAR", pass)); 



     //Encoding POST data 
     try { 
      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
     } catch (UnsupportedEncodingException e) { 
      // log exception 
      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(); 
     } 
    } 


    } 

出現了一個錯誤android.os.NetworkOnMainThreadException,所以我試圖用的AsyncTask

+0

檢查[this](http://www.vogella.com/tutorials/ApacheHttpClient/article.html)並且不要忘記放置Internet權限 – ashutiwari4 2015-04-02 05:36:36

回答

0

以前的代碼你沒有執行,執行你的默認客戶端並尋找響應,你做了postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));,之後你需要執行它。

Sending HTTP POST Request In Java

閱讀Log.d("Http Post Response:", response.toString());,看看它返回。我認爲你的網址不適用於POST方法。

+0

postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = hc.execute(postMethod); }如果像這樣它不起作用 – 2015-04-02 06:10:02

+0

使用HttpClient,請看看我上面發佈的鏈接。 – 2015-04-02 06:16:14

+0

請看我的代碼波紋管 – 2015-04-02 06:43:14