2014-03-19 90 views
-2

我需要發送一些由我的Android應用程序中的edittext輸入的數據,但我不明白我必須如何爲服務器端做代碼!我在PHP 5.3上。Android如何通過Json發送數據字符串到服務器?

+0

參考這些http://stackoverflow.com/questions/2540786/android-json-httpclient-to-send-data-to -php-server-with-httpresponse,http://stackoverflow.com/questions/8317553/sending-data-from-android-to-server-with-json-data – Piyush

+0

[This](http://www.androidhive .info/2012/01/android-json-parsing-tutorial /)將幫助您理解呼叫和響應的整個流程 – Akshay

+0

這是用於檢索數據,而不是用於發佈。 – user3437592

回答

0

你可以通過使用查詢字符串。但爲此,你需要一個服務器端的api。 要發送服務器端數據u可以使用此代碼: -

public String connect(String url) 
    {//for connect to database(QueryString API) 
     String userID = null; 
     HttpClient httpc = new DefaultHttpClient(); 
     try 
     { 
     HttpPost post = new HttpPost(url); 

      HttpResponse response = httpc.execute(post); 
      if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) 
      { 
       userID = EntityUtils.toString(response.getEntity()); 
       Log.v("Login response", "" + userID); 
      } 
     } 
     catch (ClientProtocolException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     return userID; 
    } 

public void abcd(String a1, String a2, String a3, 
      String a4, String a5) { 

     String QS ="";//acc. to ur data 
     String finalURL2 = url + QS; 

     String result2 = connect(finalURL2); 
     Log.v("message", result2); 
    } 
0
it Depends how your server side is implemented Normally sending data Requires Either HTTPPost Method or HTTPPut methods. More commonly used is HTTPPost methods That has header data and Body Data 

you need to do it in following way 

1- convert your json object to String 

user.toString(); 
2- add Targeted URL 

String URL="Enter URL here"; 
3- add url to the request 

response = dohttpPostWithCode(URL.toString(),user.toString()); 
response is String [ ] that have 2 index i- for response code ii- for data 

4- method to handle data 

public String[] dohttpPostWithCode(String url,String postParameters) throws Exception { 
     URL weburl = new URL(url); 
     URI uri = new URI(weburl.getProtocol(), weburl.getUserInfo(), weburl.getHost(), weburl.getPort(), weburl.getPath(), weburl.getQuery(), weburl.getRef()); 
      BufferedReader in = null; 
      String[] result = new String[2];   
      try { 
       HttpParams httpParameters = new BasicHttpParams(); 
       // Set the timeout in milliseconds until a connection is established. 
       int timeoutConnection = 20000; 
       HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); 
       // Set the default socket timeout (SO_TIMEOUT) 
       // in milliseconds which is the timeout for waiting for data. 
       int timeoutSocket = 20000; 
       HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); 
       HttpURLConnection httpURL=(HttpURLConnection) weburl.openConnection(); 
       httpURL.setDoOutput(true); 
       httpURL.setDoInput(true); 
       httpURL.setRequestMethod("POST"); 
       HttpClient client =new DefaultHttpClient(httpParameters);    
       HttpPost httpPost = new HttpPost(uri); 
       //httpPost.addHeader("language","en"); 
       httpPost.addHeader("Content-Type", "application/json"); 

       // StringEntity entity = new StringEntity(postParameters, HTTP.UTF_8); 
       httpPost.setEntity(new StringEntity(postParameters)); 
       // httpPost.setEntity(entity); 
       // httpPost.setEntity(new UrlEncodedFormEntity(postParameters)); 
       HttpResponse response = client.execute(httpPost);    
       in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
       StringBuffer sb = new StringBuffer(""); 
       String line = ""; 
       String NL = System.getProperty("line.separator"); 

       while ((line = in.readLine()) != null) { 
        sb.append(line + NL); 
       } 
       in.close(); 
/*    String result = sb.toString(); 
       return result;*/ 
       result[0] = response.getStatusLine().getStatusCode()+""; 
       result[1] = sb.toString(); 
       return result; 
      } finally { 
       if (in != null) { 
        try { 
         in.close(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     } 
相關問題