gpt4 book ai didi

android - 适用于 Android 应用程序的 RESTful Web 服务

转载 作者:行者123 更新时间:2023-11-29 12:36:30 24 4
gpt4 key购买 nike

我有一个应用程序,我需要从我的数据库中获取一些数据(MySQL,它保留在网络上,而不是本地)。我认为简单的 RestFul Web 服务将是我访问该数据库并获取数据的最佳选择。但是,我无法创建网络服务。我做了一些研究,但我很困惑。我所需要的只是访问数据库并从表中获取一些数据。请给我一些帮助来创建必要的网络服务。我不希望它成为一个复杂的网络服务。谢谢大家

最佳答案

这是网络服务的 php 页面。这个 userid 是从请求该数据的 android java 文件中获取的。然后从 mySql 选择数据后,它将简单地回显所有数据,并将其作为响应提供给 java 文件。

seluser_profile.php

<?php

//$con=mysql_connect("localhost","root","");
//mysql_select_db("android_db",$con);
$con=mysql_connect("localhost","root","");
mysql_select_db("android_db",$con);
$uname=$_POST['userid'];
$q="select * from user_details where username='$uname'";
$rec=mysql_query($q);

if(mysql_num_rows($rec)==1)
{
$arr=mysql_fetch_array($rec);
echo $arr[0]+" "+$arr[2]+" "+$arr[3];
}
else
{
echo "false";
}
?>

用于请求 Web 服务的 Java 代码。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.0.2/webservice/seluser_profile.php");

try {
// Add your data
//Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_LONG).show();
List<NameValuePair> namevpair = new ArrayList<NameValuePair>(2);
namevpair.add(new BasicNameValuePair("userid",valueIWantToSend));//in this first argument is name of post variable which we will use in php web service as name of post varible $_POST['fname'];

httppost.setEntity(new UrlEncodedFormEntity(namevpair));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
str = inputStreamToString(response.getEntity().getContent()).toString();
//Toast.makeText(getApplicationContext(), "your answer="+str, Toast.LENGTH_LONG).show();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}

在 Asynctask 类的 doInBackground 方法中使用此 java 代码。否则它会给你网络处理程序异常。

private StringBuilder inputStreamToString(InputStream is) {
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
// Read response until the end
try {
while ((line = rd.readLine()) != null) {
total.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
// Return full string
return total;
}

并添加此函数以从输入流构建字符串。

关于android - 适用于 Android 应用程序的 RESTful Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com