2012-11-21 2 views
1

내 사용자가 안드로이드 응용 프로그램이 자동으로 내 서버에 걸리는 작은 오류를보고 할 수있게하려고합니다. 그것은 큰 것이 아니라, 작은 텍스트 상자와 보내기 단추입니다.Android : 서버에 문자열 업로드

내 웹 사이트의 파일에 3 개의 문자열 (오류, 선택적 사용자 설명 및 시간)을 전송하여 이러한 오류를 캡처 한 것으로 가정합니다. 문제는, 어떻게 그렇게 해야할지 전혀 모르겠습니다. 내 응용 프로그램이 내 웹 사이트에서 정보를 읽도록하는 방법을 알고 있지만 다른 방법으로는 사용할 수 없습니다.

내 웹 사이트에 특수 스크립트가 있어야합니까? JSON 문자열이 필요합니까? 거기에 저장 될 문자열이 필요합니다. (일시적이 아님) 나는 약간의 초보자이기 때문에 어떤 도움을 주시면 감사하겠습니다. 감사!

답변

0

은 서버에서 실행되는 script, 예를 들어이 있어야한다.

- 클라이언트가 액세스 할 수 있도록 그 사실 웹 서비스은 서버에 게시.

- 그런 다음 서버에 HTTP Post을 수행해야합니다, 그것의 더 나은 데이터를 보내도록 함께 NameValuePair를 사용합니다.

이것은 HTTP POST 작업을 수행하는 내 코드입니다 :

public String postData(String url, String xmlQuery) { 

     final String urlStr = url; 
     final String xmlStr = xmlQuery; 
     final StringBuilder sb = new StringBuilder(); 

     Thread t1 = new Thread(new Runnable() { 

      public void run() { 

       HttpClient httpclient = MySSLSocketFactory.getNewHttpClient(); 

       HttpPost httppost = new HttpPost(urlStr); 

       try { 

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
          1); 
        nameValuePairs.add(new BasicNameValuePair("xml", xmlStr)); 

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        HttpResponse response = httpclient.execute(httppost); 

        Log.d("Vivek", response.toString()); 

        HttpEntity entity = response.getEntity(); 
        InputStream i = entity.getContent(); 

        Log.d("Vivek", i.toString()); 
        InputStreamReader isr = new InputStreamReader(i); 

        BufferedReader br = new BufferedReader(isr); 

        String s = null; 

        while ((s = br.readLine()) != null) { 

         Log.d("YumZing", s); 
         sb.append(s); 
        } 

        Log.d("Check Now", sb + ""); 

       } catch (ClientProtocolException e) { 

        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } /* 
       * catch (ParserConfigurationException e) { // TODO 
       * Auto-generated catch block e.printStackTrace(); } catch 
       * (SAXException e) { // TODO Auto-generated catch block 
       * e.printStackTrace(); } 
       */ 
      } 

     }); 

     t1.start(); 
     try { 
      t1.join(); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     System.out.println("Getting from Post Data Method " + sb.toString()); 

     return sb.toString(); 
    } 

////////////////////////////편집 된 부분 /////////////////////////

서버 측 PHP 코드 :

<?php 

require_once(ROOT.'/lab/lib/xyz_api_int.php'); 

try { 

    //setup the sdk 
    $api = YumzingApiInt::_get(
     Config::get('api_int','url'), 
     Config::get('api_int','key'), 
     Config::get('api_int','secret') 
    ); 

    //connect to the api 
    $api->connect(); 

    //check our token 
    echo $api->getToken(); 

} catch(Exception $e){ 
    sysError($e->getMessage()); 
} 
+0

고마워요! 매우 유용합니다! 서버에서 실행중인 스크립트를 보여 주시겠습니까? – Pkmmte

+0

@Pkmmte 필요에 따라 서버 측 스크립트를 추가했습니다 ... pls 편집 된 부분보기 –

0

파일이나 데이터베이스에 해당 값을 저장하는 서버의 PHP 스크립트에 http 값을 게시하기 만하면됩니다. php script -

+0

정확히 내가 어떻게해야합니까? – Pkmmte

+0

일부 기본 PHP를 배우고 스크립트로 데이터를 보내는 방법을 이해함으로써. "http://yourserver.org/saveerrrors.php?error=blabla&time=01011970 (요청을받을 수는 있지만 게시물은 작업에 더 적합 할 것입니다)과 같은 URL을 호출하여 보낼 수 있습니다. – galex