2013-09-27 62 views
0

我是新的Android和我被阻止的問題我不知道如何解決: 從我的應用程序我試圖發送此表單的消息到服務器以修改一個xml文件服務器:Android:如何使用GetHttp發送變量參數?

https://myserver/index.php?x0=param1&y0=param2&z0=param3  

我設法使其與使用的代碼的param1,param2的和參數3,即固定值工作下面我修改服務器上的XML文件的值爲1,2和3:

private OnClickListener InitialPosListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     String x00 = InitialPosX.getText().toString(); String y00 = InitialPosY.getText().toString(); String z00 = InitialPosZ.getText().toString(); 

     float x0 = Float.valueOf(x00); float y0 = Float.valueOf(y00); float z0 = Float.valueOf(z00); 

     new RequestTask().execute(https://myserver/index.php?x0=1&y0=2&z0=3); 
     }   
     }; 

class RequestTask extends AsyncTask<String, String, String>{ 

      @Override 
      protected String doInBackground(String... uri) { 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpResponse response; 
       String responseString = null; 
       try { 
        response = httpclient.execute(new HttpGet(uri[0])); 
        StatusLine statusLine = response.getStatusLine(); 
        if(statusLine.getStatusCode() == HttpStatus.SC_OK){ 
         ByteArrayOutputStream out = new ByteArrayOutputStream(); 
         response.getEntity().writeTo(out); 
         out.close(); 
         responseString = out.toString(); 
        } else{ 
         //Closes the connection. 
         response.getEntity().getContent().close(); 
         throw new IOException(statusLine.getReasonPhrase()); 
        } 
       } catch (ClientProtocolException e) { 
        //TODO Handle problems.. 
       } catch (IOException e) { 
        //TODO Handle problems.. 
       } 
       return responseString; 
      } 

      @Override 
      protected void onPostExecute(String result) { 
       super.onPostExecute(result); 
       //Do anything with response.. 
      } 
     } 

但我的問題是,我想發送不是固定值,而是由用戶輸入並讀取的值(變量)在「InitialPosListener」中:x00,y00和z00 ...

有沒有辦法做到這一點?非常感謝

回答

0

它看起來像你只是執行HTTP GET到你的服務器。調用

new RequestTask().execute("https://myserver/index.php?x0=" + x00 + "&y0=" + y00 + "&z0=" + z00); 

會做你想做的。

+0

大,使用此語法它的作品,非常感謝:) – user2748484

+0

我才意識到這裏有一個新的問題:它但只有一個:當我點擊按鈕上的第一次時,應用程序會向服務器發送x00,y00和z00的值 - 但如果再次點擊按鈕,使用x00,y00和z00的新值,新的值不會再發送給服務器......您知道爲什麼會發生這種情況嗎?謝謝 – user2748484

+0

我需要看代碼。你有沒有使用任何班級成員? – bart

0

在doInBackground(字符串... URI)的方法,嘗試是這樣的:

DefaultHttpClient client1 = new DefaultHttpClient(); 
HttpResponse response = null; 
HttpGet httpGet = null; 

try { 
    httpGet = new HttpGet(URL); 
    response = client1.execute(httpGet); 
    ...... 
}