문제

I'm fairly new to android and PHP programming and I am currently running into a problem printing my echo statement from my php page, which is as simple as:

    <?php
    echo "Hey there response!";
    ?>

What I am currently using in my MainActivity is:

        setContentView(R.layout.activity_main);

    TextView txtView = (TextView) findViewById(R.id.txt);

    //ASYNC WAY
    new GetData(txtView).execute("");

Where AsyncTask is defined by:

private class GetData extends AsyncTask<String, Void, String>{
    private TextView display;


    GetData(TextView view){
        this.display = view;
        display = (TextView) findViewById(R.id.txt);
    }

    protected String doInBackground(String... message){
        HttpClient httpclient;
        HttpGet request;
        HttpResponse response = null;
        String result = "error0";
        try{
            httpclient = new DefaultHttpClient();
            request = new HttpGet("http://localhost/php/wamp.php");
            response = httpclient.execute(request);
        } catch (Exception e){
            result = "error1";
        }

        try{
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));
            String line="";
            while((line = rd.readLine()) != null){
                result = result + line;
            }
        } catch(Exception e){
            result = "error2";
        }
        return result;
    }

    protected void onPostExecute(String result){
        this.display.setText(result);
    }
}

The message in the txtView becomes error2, and I have no idea why.

EDIT I was originally using a non-AsyncTask method of reading in input stream but I have switch to AsyncTask due to Networking error. The problem still persists though since I am not getting the corrent echo in my application.

도움이 되었습니까?

해결책

This is probably too late for yanki but for anybody else that comes across this page.

I tried it with yanki's code and got the same error as him "error 2". I noticed then that I hadn't updated the manifest file to allow internet permissions.

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

I ran it again and it worked perfectly. So using yanki's code and entering the internet permissions in the manifest file the program should work.

다른 팁

Try this, The problem was you are reading it as byte, you weren't converting it back to char

private String readStream(String url) {
        try {
                  HttpClient httpclient = new DefaultHttpClient();
                  HttpPost httppost = new HttpPost(Url);
                  HttpResponse response = httpclient.execute(httppost);
                  HttpEntity entity = response.getEntity();
                  InputStream is = entity.getContent();
                  String result = "";

    // convert response to string
                  new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
                  StringBuilder sb = new StringBuilder();

                  InputStreamReader r = new InputStreamReader(is, "UTF-8");
                  int intch;
                  while ((intch = r.read()) != -1) {
                    char ch = (char) intch;
                    // Log.i("app", Character.toString(ch));
                    String s = new String(Character.toString(ch).getBytes(), "UTF-8");
                    sb.append(s);
                    }
                    is.close();
                    result = sb.toString();
             } catch (Exception e) {
        Log.e(TAG, "Error converting result " + e.toString());

    }

}

Why dont you jst use JSON or XML in sending whatever value you want to be displayed in your android app... try these try these

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top