1、首先输入代码
public void SendByHttpClient(final String id, final String pw){
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpClient httpclient=new DefaultHttpClient()
HttpPost httpPost=new HttpPost("http://web应用部署服务器上的IP地址:/HttpClientDemo/Login")//服务器地址,指向Servlet
List<NameValuePair>params=new ArrayList<NameValuePair>()//将id和pw装入list
params.add(new BasicNameValuePair("ID",id))
params.add(new BasicNameValuePair("PW",pw))
final UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params,"utf-8")//以UTF-8格式发送
httpPost.setEntity(entity)
HttpResponse httpResponse= httpclient.execute(httpPost)
if(httpResponse.getStatusLine().getStatusCode()==200)//在200毫秒之内接收到返回值
2、然后再输入下方的代码:
{
HttpEntity entity=httpResponse.getEntity()
String response=EntityUtils.toString(entity1, "utf-8")//以UTF-8格式解析
Message message=new Message()
message.what=USER_LOGIN
message.obj=response
handler.sendMessage(message)使用Message传递消息给线程
}
}
catch (Exception e) {
e.printStackTrace()
}
}
}).start()
}3、最终,测试结果图,如下:
android 通过 使用httpClient 与网站servlet通信servlet 对mysql进行数据库 *** 作
也可以使用webservice *** 作mysql数据库
Android客户端直接连接远程MySQL数据库的方法如下:String result = ""
//首先使用NameValuePair封装将要查询的年数和关键字绑定
ArrayList<NameValuePair>nameValuePairs = new ArrayList<NameValuePair>()
nameValuePairs.add(new BasicNameValuePair("year","1980"))
//使用HttpPost封装整个SQL语句
//使用HttpClient发送HttpPost对象
try{
HttpClient httpclient = new DefaultHttpClient()
HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php")
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs))
HttpResponse response = httpclient.execute(httppost)
HttpEntity entity = response.getEntity()
InputStream is = entity.getContent()
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString())
}
//将HttpEntity转化为String
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8)
StringBuilder sb = new StringBuilder()
String line = null
while ((line = reader.readLine()) != null) {
sb.append(line + "\n")
}
is.close()
result=sb.toString()
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString())
}
//将String通过JSONArray解析成最终结果
try{
JSONArray jArray = new JSONArray(result)
for(int i=0i<jArray.length()i++){
JSONObject json_data = jArray.getJSONObject(i)
Log.i("log_tag","id: "+json_data.getInt("id")+
", name: "+json_data.getString("name")+
", sex: "+json_data.getInt("sex")+
", birthyear: "+json_data.getInt("birthyear")
)
}
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString())
}
虽然Android开发中可以直接连接数据库,但是实际中却不建议这么做,应该使用服务器端中转下完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)