2012-07-13 3 views
1

Android를 통해 3G를 통해 서버에 대한 연결을 만들고 싶지만 성공하지 못했습니다. Android 휴대 전화가 Wi-Fi를 통해 연결되어 있고 내 서버와 동일한 Wi-Fi 인 경우 성공합니다. 제발 도와 주실 수 있나요? 여기Android 3g를 통해 서버에 연결하고 phpmyadmin에서 데이터 가져 오기

<?php 
// on se connecte à notre base pour recuperer les data 
$base = mysql_connect ('localhost', 'root', ''); 
mysql_select_db ('routelibre', $base) ; 
$variable = $_GET['variable']; 
$first_token = strtok($variable, ";;"); 
$second_token = strtok(";;"); 
$req =mysql_query("SELECT message from messages where departement='$first_token' AND   voie='$second_token'"); 
$output=array(); 
while ($row=mysql_fetch_array($req)) {  
$output[]=$row;  
} 
//on encode en JSON 
print(json_encode($output)); 
mysql_free_result ($req); 
?> 

안드로이드에 대한 코드입니다 :

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.ListActivity; 
import android.content.Context; 
import android.net.ParseException; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.util.Log; 
import android.widget.ArrayAdapter; 
import android.widget.Toast; 
import android.content.Context; 


public class ConnexionSQL { 
public void ConnexionSQLActivity(){}; 

public ArrayList<String> ConnexionBD(String dataFromHMI, Context context) { 
    String result = null; 
    InputStream is = null; 
    JSONObject json_data=null; 
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    ArrayList<String> lesMessages = new ArrayList<String>(); 

    StrictMode.ThreadPolicy policy = new 

      StrictMode.ThreadPolicy.Builder().permitAll().build(); 

    StrictMode.setThreadPolicy(policy); 

    try{ 
     //commandes httpClient 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new 

        HttpPost("http://192.168.1.1:80/connexion_mysql.php?variable=" + dataFromHMI); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } 
    catch(Exception e){ 
     Log.i("taghttppost",""+e.toString()); 
     Toast.makeText(context,e.toString() ,Toast.LENGTH_LONG).show(); 
    } 


    //conversion de la réponse en chaine de caractère 
    try 
    { 
     BufferedReader reader = new BufferedReader(new 

     InputStreamReader(is,"UTF-8")); 

     StringBuilder sb = new StringBuilder(); 

     String line = null; 

     while ((line = reader.readLine()) != null) 
     { 
      sb.append(line + "\n"); 
     } 

     is.close(); 

     result = sb.toString(); 
    } 
    catch(Exception e) 
    { 
     Log.i("tagconvertstr",""+e.toString()); 
    } 
    //recuperation des donnees json 
    try{ 
     JSONArray jArray = new JSONArray(result); 

     for(int i=0;i<jArray.length();i++) 
     { 

      json_data = jArray.getJSONObject(i); 
      lesMessages.add(json_data.getString("message")); 
      //r.add(json_data.getString("categorie")); 

     } 
    } 
    catch(JSONException e){ 
     Log.i("tagjsonexp",""+e.toString()); 
    } catch (ParseException e) { 
     Log.i("tagjsonpars",""+e.toString()); 
    } 
    return lesMessages; 
} 

}

답변

2

이 로컬 연결을 시도 여기

먼저 내 코드, 내 데이터베이스를 요청하는 PHP입니다 .

HttpPost("http://192.168.1.1:80/connexion_mysql.php?variable=" + dataFromHMI); 

로컬 컴퓨터에 연결되어 있지 않은 상태에서 액세스 할 수있는 서버에 코드가 있습니까? 그것이 당신이 게시 할 필요가있는 URL입니다!

192.168.1.1는 (? 아마 등) 링크시스 라우터에서 사용하는 기본 IP 주소를 참조입니다 : http://www.tech-faq.com/192-168-1-1.html

그래서, 당신은 192.168 @ 저장된 소스에 액세스 할 수 당신보다이 라우터에 무선 랜을 통해 연결되어있는 경우. 1.1 : 80 이상 3g 이상이 라우터에 연결되어 있지 않습니다. 다른 방법으로 파일을 호스팅해야합니다 ... 서버를 설정하고 웹 호스팅 서비스를 통해 파일을 호스팅하는 등의 작업을 통해 원격으로 파일에 액세스하십시오!

+0

죄송합니다. 이해가 안되면 ... 조금 서둘 렀어 ... 언제든지 질문 해주세요. – javajavajava

+0

서버가 없습니다. 내 컴퓨터에만 있습니다. 이해가 잘 못되는지 설명해 주시겠습니까? – user1106464

+0

내 대답을 편집했습니다 ... 도움이되는지 확인하십시오. – javajavajava