2013-04-05 2 views
-1

내 안드로이드 장치에서 로컬 호스트를 액세서 필요 지금. 여기에 Java 코드가 있으며 여기서 수정해야 할 부분을 강조 할 것입니다. localhost/android_data ...를 통해 내 컴퓨터에서 PHP 파일에 액세스 할 수 있지만 내 전화 브라우저에서 액세스 할 수 없습니다. 또한 첨부 된 xml 파일에 작성된 코드가 없기 때문에 아마도 내 PHP 파일이 응용 프로그램에 표시되지 않는 것입니다.내가 다음 폴더에 PHP 파일을

추가 참고 사항 : 내부 다음 MySQLData.java라는

[{"name":"User1","received_power":"-75.12207037710479","tower":"4","status":"0"},{"name":"User2","received_power":"18.89454151068304","tower":"3","status":"0"}] 

내 자바 파일이 있습니다 :

난 그냥 내 응용 프로그램은 MySQL의 데이터베이스와 출력에 연결되어있는이 PHP 파일을 표시 할
package com.example.qosmetre2; 
import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.net.ParseException; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 

public class MySQLData extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     String result = null; 
     InputStream is = null; 
     StringBuilder sb=null; 
     //String result=null; 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     //http post 

     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://174.112.97.111/android_test/fetch_data2.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection"+e.toString()); 
     } 

     //convert response to string 

     try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      sb = new StringBuilder(); 
      sb.append(reader.readLine() + "\n"); 
      String line="0"; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 

      is.close(); 
      result=sb.toString(); 

     }catch(Exception e){ 

      Log.e("log_tag", "Error converting result "+e.toString()); 
     } 
     //paring data 

     String nam; 
     int rec_pow; 
     int tow; 
     int stat; 

     try{ 
     JSONArray jArray = new JSONArray(result); 
     JSONObject json_data=null; 

     for(int i=0;i<jArray.length();i++){ 
       json_data = jArray.getJSONObject(i); 
       nam=json_data.getString("name"); 
       rec_pow=json_data.getInt("recieved_power"); 
       tow=json_data.getInt("tower"); 
       stat=json_data.getInt("status"); 

     } 

     }catch(JSONException e1){ 
      Toast.makeText(getBaseContext(), "Could not Parse Data", Toast.LENGTH_LONG).show(); 
     }catch (ParseException e1){ 
      e1.printStackTrace(); 

     } 

    } 

} 

MainActivity.java라는 또 다른 파일에는 기본 파일을 제외하고는 아무것도 들어 있지 않으며 main_activity.xml이라는 XML 파일이 있으며 그 안에 아무것도없는 파일이 있습니다. 여기

내 andoidmanifest.xml입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.qosmetre2" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.qosmetre2.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".MySQLData" 
     android:label="All the Data" > 
    </activity> 

</application> 

+1

두 장치가 같은 네트워크에 있습니까? –

+0

http://174.112.97.111은 안드로이드 장치가 액세스 할 수있는 사이트라고 가정합니다 ... 안드로이드의 브라우저에서 그렇게하려고 했습니까? 나는 내 컴퓨터에서 그것을 얻을 수 없었다. @ RaghavSood가 암시 하듯이 - 안드로이드가 서버를 볼 수 없다면 모든 베팅은 꺼져 있습니다. – Floris

+0

이 문제의 원인은 wamp가 localhost에서 오는 연결을 허용하지 않도록 설정 한 것일 수 있습니다. – Chronial

답변

2

두 장치가 같은 네트워크에있는 경우, 그리고 당신이에 연결/집에있을 때 당신은이 응용 프로그램을 사용할 것 같은 네트워크를 사용한다면 라우터와 같은 컴퓨터에 할당 된 로컬 IP 주소를 사용할 수 있습니다. 192.168.1.4

이 응용 프로그램을 3G/4G 또는 다른 WiFi 연결에서 멀리 사용하려는 경우 라우터의 포트 포워딩 설정을 편집해야합니다. 그런 다음 라우터의 IP 주소를 사용하여 포트에 연결하게됩니다. 또한 IP 주소에 연결된 무료 도메인 이름을 등록 할 수 있으므로 많은 수의 번호를 기억할 필요가 없습니다.

이것은 코딩 문제가 아닙니다 ...

+0

집에서와 같이 동일한 네트워크가 아닌 앱을 사용하고 싶습니다. 내 IP 주소는 192.168.0.10입니다.이 응용 프로그램을 포팅하려고했으나 문제가 있습니다. 내가 작성해야하는 매개 변수는 다음과 같습니다 이름 유형 TCP UDP TCP/UDP LAN 서버 IP ... 원격 IP가 없음 싱글 주소 주소 범위 시작 IP ... 끝 IP ... 공공 IP 포트 포트 범위 단일 포트 공용 포트 시작 최종 공용 포트 개인 포트 – user2159721

+0

그리고 xml까지 내가 어떻게해야합니까? 나는 그것을두고 뭔가가 나타날 것인가? – user2159721

+0

xml 파일은 레이아웃입니다 ... 포트 포워딩은 포트 80 (http 포트)이고 LAN 서버 IP는 컴퓨터의 IP가됩니다 – ElefantPhace

관련 문제