2016-08-17 18 views
1

問題が発生しています。アンドロイドアプリのURL接続要求が処理されない

次のコードが機能しない理由がわかりません。

テーブルに行を挿入するはずのPHPフラグメントにGETリクエストを送信する単純なアプリケーションです。

なぜ動作しないのかわかりません。

助けてください。

のjava:

package com.example.michael.biyum; 

import android.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class MainActivity extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 
    final AlertDialog alertDialog = alertDialogBuilder.create(); 
    Button startBtn = (Button) findViewById(R.id.btn); 
    final TextView t = (TextView) findViewById(R.id.hello); 
    startBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      URL url; 
      HttpURLConnection urlConnection = null; 
      try { 
       url = new URL("http://www.chatty.co.il/biyum.php?q=mkyong"); 
       urlConnection = (HttpURLConnection) url.openConnection(); 
       InputStream in = urlConnection.getInputStream(); 
       InputStreamReader isw = new InputStreamReader(in); 
       int data = isw.read(); 
       while (data != -1) { 
        char current = (char) data; 
        data = isw.read(); 
      Toast.makeText(getApplicationContext(),"GET:"+current,Toast.LENGTH_LONG).show(); 
        System.out.print(current); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       if (urlConnection != null) { 
        urlConnection.disconnect(); 
       } 
      } 
     } 


    }); 
    } 
} 

PHP:

<?php 
require('connect.inc.php'); 
$update_offline="INSERT INTO offline_waiters (user_partner,mail,chat_room) VALUES(0,'gavno','gavno')"; 
$query_run= mysqli_query($conn,$update_offline); 

echo "new"; 



?> 

それは私のテーブルに新しい行を入力する必要があります簡単なテストです。

リクエストをブラウザ経由で手動で行うと、正常に動作します。

もう一度問題がどこにあるか理解してください。

答えて

1

メインスレッドのネットワーク操作を解除する必要があります。

私はこの作業を持って、AsyncTaskを使用してテスト:

class MyAsyncTask extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     StringBuilder result = new StringBuilder(); 
     URL url; 
     HttpURLConnection urlConnection = null; 
     try { 
      url = new URL("http://www.chatty.co.il/biyum.php?q=mkyong"); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      InputStream in = urlConnection.getInputStream(); 
      InputStreamReader isw = new InputStreamReader(in); 
      int data = isw.read(); 
      while (data != -1) { 
       char current = (char) data; 
       data = isw.read(); 
       result.append(current); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (urlConnection != null) { 
       urlConnection.disconnect(); 
      } 
     } 

     return result.toString(); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     Toast.makeText(getApplicationContext(),"GET:"+result,Toast.LENGTH_LONG).show(); 
    } 
} 

をちょうどあなたのクリックリスナーからAsyncTaskを実行します。トーストで

startBtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      new MyAsyncTask().execute(); 
    }); 

結果:

enter image description here

関連する問題