2012-12-27 2 views
2

나는이 포럼을 오랫동안 사용하고 있습니다. 우선, 도와 주셔서 고맙다고 말씀 드리고 싶습니다. 나에게 많은 시간. 내가 처음으로 대답을 찾지 못해서 나를 놀라게했다. ...PHP로 안드로이드에서 데이터를 게시

DB에서 /로 데이터를 가져 오거나 가져 오는 슈퍼 간단한 응용 프로그램을 작성하려고합니다. 문제는 데이터를 게시 할 수 없다는 것입니다. 나는 안드로이드 장치에서 데이터를 가져 와서 DB로 보내야하는 PHP 파일을 사용하고 있습니다. 처음에는 PHP 파일에 게시 할 수 없습니다. 나는 그것의 모든 것을 (내가 아는) 시도했다.

는 PHP는

$test=$_POST['v']; print $_POST['v']; 

는 자바가

공공 무효 postData를()가 ClientProtocolException, IOException가 슬로우 {

// Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost post = new HttpPost("https://www.myweb.coom/test.php"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("v", "123")); 
     post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     httpclient.execute(post); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 

내가 로그인을했습니다. *이 저를 보여

을 파일 - 파일 - 영원히 괜찮습니다. ... PHP는 어떤 데이터를 얻을하지 않는 것 같다

편집 ASYNTASK ----- 공용 클래스 업로드 AsyncTask를 확장 {

@Override 
protected String doInBackground(String... params) { 
    try { 
     JSONObject json = new JSONObject(); 
     json.put("UserName", "test2"); 
     json.put("FullName", "1234567"); 
     HttpParams httpParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParams, 
       10000); 
     HttpConnectionParams.setSoTimeout(httpParams, 10000); 
     HttpClient client = new DefaultHttpClient(httpParams); 
     // 

     String url = "http://my WAMP server/test.php"+ 
          "json={\"UserName\":1,\"FullName\":2}"; 

     HttpPost request = new HttpPost(url); 
     request.setEntity(new ByteArrayEntity(json.toString().getBytes(
       "UTF8"))); 
     request.setHeader("json", json.toString()); 
     HttpResponse response = client.execute(request); 
     HttpEntity entity = response.getEntity(); 
     // If the response does not enclose an entity, there is no need 
     if (entity != null) { 
      InputStream instream = entity.getContent(); 

      String result = "gr8 Success"; 
      Log.i("Read from server", result); 

     } 
    } catch (Throwable t) { 
     Log.e("Request failed: " ,"ERR"+ t.toString()); 
    } 

} 

}

MainActivity-

public void postData(View v) { //starts on button click 

    if(upload!=null){ 
     if(upload.getStatus()!= AsyncTask.Status.FINISHED){ 
      Log.d("postData","no need to start AsyncTask"); 
      return; 
     } 

    } 
    upload= new Upload(); 
    upload.execute(); 
    Log.i("Async", "Starting..."); 

} 

PHP- $ json = $ _GET [ 'json']; $ obj = json_decode ($ json);

   $posts = array(1); 
       header('Content-type: application/json'); 
       echo json_encode(array('posts'=>$posts)); 
+0

가 아니라 웹으로 동적으로 PHP 파일에 쓰려고합니까 작성해야합니까? 어쩌면 그냥 파일에 쓰도록 만들어야합니다. –

+0

에뮬레이터에서 코드를 실행하고 wireshark에서 트래픽을 덤프하십시오. 이렇게하면 문제를 해결하는 데 도움이됩니다. – rekire

+0

나는 그것을 그것을 위해 파일에 쓰고있다. 다른 것들은 ... 에뮬레이터를 사용하지 않고 장치를 사용하고 있습니다. – AndroAid

답변

0

사용중인 Android SDK의 버전. 4.1 이상 SDK를 사용하는 경우 보조 스레드 및 UI 스레드가 아닌 http 호출을 확인하십시오. 이후로 예외를 신고하지 않았으므로 인터넷 허가를 받았습니다.

+0

님이 허가를주었습니다. 나는 4.1을 사용한다. onclick- 메서드를 시작하려고했는데 충분합니까? 아니면 실제로 다른 스레드가 필요합니까? – AndroAid

+0

네, 다른 스레드가 필요합니다.AsyncTask를하고 내부를 사용해보십시오 그 doInbackground 수 있도록 HTTP 호출 – Relsell

+0

음 ... 난 여전히 작동하지 않습니다 .. 몇 가지 숙제를했다는 말을해야 :() S ... – AndroAid

관련 문제