【发布时间】:2014-06-11 01:06:46
【问题描述】:
我想从 Android 应用程序调用服务器上的特定 php 函数并发送一些参数。到目前为止,我已经实现了可以使用 HttpClient 打开 php 文件并将数据传输到 Json 并在我的应用程序中显示出来。所以,现在我希望能够调用特定的函数并向它发送参数,我该怎么做呢? 谢谢。
【问题讨论】:
我想从 Android 应用程序调用服务器上的特定 php 函数并发送一些参数。到目前为止,我已经实现了可以使用 HttpClient 打开 php 文件并将数据传输到 Json 并在我的应用程序中显示出来。所以,现在我希望能够调用特定的函数并向它发送参数,我该怎么做呢? 谢谢。
【问题讨论】:
这是我为使用 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。 如果 User 已经被占用,则返回“N”;否则创建用户并返回“Y”。
在服务器端,您将它们视为 POST 信息,因此:
$user = $_POST['User'];
它应该适合你的情况:)
干杯!
【讨论】:
将这些特定的 php 函数与您所需的参数一起呈现或包装在一个网络服务中,并调用该网络服务,包括来自您的 android 的输入参数以完成工作。
【讨论】:
您需要使用 WebServices 来完成这项工作。 http://www.php.net/manual/en/book.soap.php
【讨论】: