2012-04-25 114 views
3

我想從Android應用程序調用服務器上的特定PHP函數,併發送一些參數。直到現在我已經實現了,我可以使用HttpClient打開php文件並執行數據傳輸到Json並在我的應用程序中顯示。所以,現在我想能夠調用特定的函數併發送參數給它,我該怎麼做? 謝謝。從android調用PHP函數?

回答

4

下面是一段代碼,我寫了註冊使用JSON一個新的用戶名:

public static boolean register(Context myContext, String name, String pwd) { 

      byte[] data; 
      HttpPost httppost; 
      StringBuffer buffer; 
      HttpResponse response; 
      HttpClient httpclient; 
      InputStream inputStream; 
      List<NameValuePair> nameValuePairs; 

      try { 
        httpclient = new DefaultHttpClient(); 
        httppost = new HttpPost(
            "http://X.X.X.X/register.php"); 
        // Add your data 
        nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("User", name.trim())); 
        nameValuePairs.add(new BasicNameValuePair("Password", pwd.trim())); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

        // Execute HTTP Post Request 
        response = httpclient.execute(httppost); 
        inputStream = response.getEntity().getContent(); 

        data = new byte[256]; 

        buffer = new StringBuffer(); 
        int len = 0; 
        while (-1 != (len = inputStream.read(data))) { 
          buffer.append(new String(data, 0, len)); 
        } 

        inputStream.close(); 
      } 

      catch (Exception e) { 
        Toast.makeText(myContext, "error" + e.toString(), Toast.LENGTH_LONG) 
            .show(); 
        return false; 
      } 


      if (buffer.charAt(0) == 'Y') { 

        return true; 
      } else { 

        return false; 
      } 

    } 

如果您發現:

  nameValuePairs = new ArrayList<NameValuePair>(2); 
        nameValuePairs.add(new BasicNameValuePair("User", name.trim())); 
        nameValuePairs.add(new BasicNameValuePair("Password", pwd.trim())); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

在一塊,你可以發送參數。

該方法只是發送用戶名和密碼到register.php。 如果用戶已被使用,則返回'N';否則創建用戶並返回'Y'。

在服務器端,你把他們當作POST信息,所以:

$user = $_POST['User']; 

應該對你的情況做:)

乾杯!

+0

的網絡服務,讓我知道是否也需要php;) – N3sh 2012-04-25 10:05:27

+0

非常感謝! 只是還有一個問題,我可以調用例如PHP函數「函數getSettings($ value)」,它會將某些內容發回給Android?因爲我想在同一個php文件中使用一些函數,並在需要時單獨調用它們。 是否有命令? 再次感謝您。 – Wolf87 2012-04-25 10:11:29

+0

如果你看到那裏,它已經返回一些東西('Y'或'N')。 所以,如果它像char,string等簡單的東西。你可以讀取緩衝區並'構建'響應並相應地使用它。否則,你需要做一些額外的:檢查我的這個問題,這將是有益的;)http://stackoverflow.com/questions/10186266/android-json-mysql-query-gives-networkonmainthreadexception – N3sh 2012-04-25 10:15:13

1

將這些特定的php函數與您的必需參數一起存在於web服務中,並調用該web服務(包括來自android的輸入參數以完成工作)。

+0

你的意思是這樣的 $ sql = mysql_query(「INSERT INTO CITY(CITY_NAME)VALUES('」。$ _ REQUEST ['c_name']。''')「); – Wolf87 2012-04-25 09:42:33

+0

要求發送整個查詢作爲參數?如果是的話,那就錯了。您應該在Web服務中包含查詢部分。並且只將參數中的城市名稱發送到電話 – waqaslam 2012-04-25 09:53:52