Я пытаюсь подключить свое приложение Android к локальному URL-адресу хоста благодаря серверу wamp, но он не работает. Моя цель здесь - получить данные json и проанализировать эти данные. Для моего теста я использую устройство не эмулятор, и я использую разрешение в AndroidManifest.xml:Android-подключение к localhost
<uses-permission android:name="android.permission.INTERNET" />
Мой URL выглядит следующим образом:
String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php";
я пытался:
http://localhost/
http://10.0.2.2:8080/
http://10.0.2.2/
Но он никогда не работал до сих пор:
java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 80): connect failed: ECONNREFUSED (Connection refused)
failed to connect to /10.0.2.2 (port 8080): connect failed: ETIMEDOUT (Connection timed out)
java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect failed: ETIMEDOUT (Connection timed out)
Затем я попробовал с помощью теста json url, который был найден в Интернете: http://headers.jsontest.com/
Он работал очень хорошо, и я получил данные json по этому адресу. Так что, я думаю, мой код хорош, и проблема здесь в моем локальном URL-адресе, я не знаю, какая должна быть его точная форма. Я прочитал много потоков об этом, но я не нашел решения.
Вот мой код:
Основная деятельность:
public class MainActivity extends Activity {
private String url = "http://10.0.2.2:8080/tests/PhpProject1/connectionBDD.php";
private ListView lv = null;
private Button bGetData;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final JsonDownloaderTask task = new JsonDownloaderTask(this);
lv = (ListView) findViewById(R.id.list);
bGetData = (Button)findViewById(R.id.getdata);
bGetData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
task.execute(url);
}
});
}
public void jsonTaskComplete(JSONArray data){
//todo
}
}
AsyncTask:
public class JsonDownloaderTask extends AsyncTask<String, String, JSONArray> {
MainActivity ma;
public JsonDownloaderTask(MainActivity main){
ma = main;
}
@Override
protected JSONArray doInBackground(String... url) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONArray jsonArray = null;
try {
jsonArray = jParser.getJSONFromUrl(url[0]);
} catch (IOException e) {
e.printStackTrace();
}
return jsonArray;
}
protected void onPostExecute(JSONArray data){
ma.jsonTaskComplete(data);
}
}
JSONParser:
public class JSONParser {
String data = "";
JSONArray jsonArray = null;
InputStream is = null;
public JSONParser(){}
// Method to download json data from url
public JSONArray getJSONFromUrl(String strUrl) throws IOException{
try{
URL url = new URL(strUrl);
// Creating an http connection to communicate with url
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
// Connecting to url
urlConnection.connect();
// Reading data from url
is = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String line = "";
while((line = br.readLine()) != null){
sb.append(line);
}
is.close();
data = sb.toString();
//br.close();
jsonArray = new JSONArray(data);
}catch(Exception e){
Log.d("Exception while downloading url", e.toString());
}finally{
is.close();
}
return jsonArray;
}
}
Спасибо за ответ, мне удалось это с помощью NetBeans теперь, urlConnection.connet(); работает отлично, но у меня есть другое исключение: java.net.SocketException: recvfrom failed: ECONNRESET (соединение сброшено сверстником), возможно, вы знаете эту проблему – AlexDG
Ну, для этой новой проблемы вы можете прочитать здесь http://stackoverflow.com/questions/11207394/get-socketexception-connection-reset-by-peer-in-android, и теперь вы можете принять ответ –
Благодарим за помощь. – AlexDG