java.net.socketException: время ожидания при запуске приложения на реальном устройстве

этот код отлично работает на эмуляторе, но на реальном устройстве выдает

java.net.SocketException: время ожидания операции истекло, у меня есть php-скрипт, работающий на моем сервере xampp.

package com.example.new1;


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

 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.app.Activity;
 import android.view.Menu;
 import android.view.View;
 import android.widget.TextView;

  public class MainActivity extends Activity {
  TextView tx;
  StringBuilder stringBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tx= (TextView)findViewById(R.id.text);
}

public void func(View view)
{
    //tx.setText("Working fine till here.");
     new FetchSQL().execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
private class FetchSQL  extends AsyncTask<String,Void,String>

{   

    @Override
    protected String doInBackground(String... arg0) {
            URL url = null;
            BufferedReader reader = null;

            String myUrl = "http://10.22.35.4:80/conc2.php";
        try
        { url =new URL(myUrl);
          HttpURLConnection connection = (HttpURLConnection) url.openConnection();
          connection.setRequestMethod("GET");
          connection.setReadTimeout(15*10000);
          connection.connect();
          reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
          stringBuilder = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null)
          {
            stringBuilder.append(line + "\n");

          }
        // TODO Auto-generated method stub
        return stringBuilder.toString();
        }
        catch(final Exception e)
        {
             return e.toString();
          }

    } 

    protected void onPostExecute(final String result)
    {
        tx.setText(result);
    }


}

}

когда я нажимаю кнопку, это занимает время, установленное в моем коде, а затем не дает мне ошибку в моем текстовом представлении. пожалуйста помоги

мой php-код.

<?php
// attempt a connection
 $dbh = pg_connect("host=10.22.35.11 dbname=iwmp_dev2 user=postgres "); 

 if (!$dbh) {
 die("Error in connection: " . pg_last_error());
 }       

 // execute query
 //$sql = $_POST['pLat'];
 $sql = "SELECT officer_name FROM iwmp_officer";

 $result = pg_query($dbh, $sql);
 if (!$result) {
 die("Error in SQL query: " . pg_last_error());
 }       
 $array = array();
// iterate over result set
// print each row
while ($row = pg_fetch_assoc($result, null)) {
  $i++;
  $array = implode('+',$row);
 echo $array; 

 }


    // free memory
    pg_free_result($result);       

     // close connection
     pg_close($dbh);
       ?>       

person yug    schedule 03.05.2013    source источник
comment
Куда вы положили свой файл php?   -  person Nitish    schedule 03.05.2013
comment
установите время ожидания http-соединения для вашего http-соединения рабочий"> stackoverflow.com/questions/3075506/   -  person Raghunandan    schedule 03.05.2013
comment
Пожалуйста, обратитесь к этому сообщению, это может быть полезно stackoverflow.com/q/8240338/1292544   -  person Nitish    schedule 03.05.2013
comment
попробуйте подключиться к URL-адресу с помощью браузера на реальном устройстве   -  person Raghunandan    schedule 03.05.2013
comment
@nitish поместил файл php в папку xampp htdocs   -  person yug    schedule 03.05.2013
comment
при отладке.. с помощью моего устройства.. я получаю.._java.net.SocketException: Network unreachable_ at connection.connect();   -  person yug    schedule 03.05.2013
comment
Ну, вы передали URL-адрес локального хоста. Попробуйте передать IP-адрес вашей машины. Обратитесь к ссылке, которую я разместил в моем предыдущем комментарии.   -  person Nitish    schedule 03.05.2013
comment
ссылка, которую вы дали, создает проблему .. для этой вещи envelop .. n я уже пробовал это с IP-адресом машины.   -  person yug    schedule 03.05.2013


Ответы (1)


Исключение java.net.SocketException возникает, когда порт, к которому вы пытаетесь подключиться, не закрыт или недоступен. Он занимает указанное вами количество времени для поиска порта, а затем выходит.

Во-первых, попробуйте вызвать эту службу в своем мобильном веб-браузере, чтобы проверить, доступна она или нет. Если он не отображается, это означает, что ваше устройство не подключено к сети, в которой находится этот файл.

Возможно, ваш брандмауэр не позволяет пропинговать ваш порт. Когда вы работаете со своим эмулятором, он работает, поскольку он находится на том же ПК, но в случае вашего реального устройства он подключается через локальную сеть, и некоторое время брандмауэр не разрешает. Решение: разблокируйте этот запрос в брандмауэре или попробуйте это, закрыв брандмауэр.

person Yatin Wadhawan    schedule 04.05.2013