• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Android+PHP 使用HttpClient提交POST的请求,使用JSON解析响应

php 搞代码 3年前 (2022-01-23) 32次浏览 已收录 0个评论

这里介绍一下如何让自己的Android程序具有联网功能。当然首先要有一台服务器,如果只是进行测试的话,可以使用局域网代替(手机连电脑wifi)。

要求电脑已配置好Apache+PHP环境。

下面是一个简单的Android程序,相信只要有一定的Java基础就能大概“猜懂”其中的含义。(程序可能写的不够完善)

Android程序

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/Activity_vertical_margin"    android:paddingLeft="@dimen/Activity_horizontal_margin"    android:paddingRight="@dimen/Activity_horizontal_margin"    android:paddingTop="@dimen/Activity_vertical_margin"    tools:c    android:orientation="vertical" >    <TextView         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:text="使用JSON解析"        android:textSize="30sp"/>        <LinearLayout         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:gravity="center">                                        	<LinearLayout         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:gravity="center">                                            	

MainActivity.java

package com.example.jsontest;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.Apache.http.HttpEntity;import org.Apache.http.HttpResponse;import org.Apache.http.NameValuePair;import org.Apache.http.client.HttpClient;import org.Apache.http.client.entity.UrlEncodedFormEntity;import org.Apache.http.client.methods.HttpPost;import org.Apache.http.impl.client.DefaultHttpClient;import org.Apache.http.message.BasicNameValuePair;import org.Apache.http.protocol.HTTP;import org.json.JSONArray;import org.json.JSONObject;import android.os.Bundle;import android.os.Looper;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends ActionBarActivity {	EditText et_id;	EditText et_psw;	Button btn_login;	    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.Activity_main);                initView();    }        private boolean check(String id, String psw) {    	if("".equals(id) || "".equals(psw))    		return false;    	return true;    }        private void initView() {    	et_id = (EditText)findViewById(R.id.et_id);    	et_psw = (EditText)findViewById(R.id.et_psw);    	btn_login = (Button)findViewById(R.id.btn_login);    	    	btn_login.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				// TODO Auto-generated method stub				//获取用户输入的用户名和密码				final String id = et_id.getText().toString().trim();				final String psw = et_psw.getText().toString().trim();								if(check(id, psw)) {					new Thread() {						public void run() {							try {								HttpPost post = new HttpPost("这里要改成服务器文件所在URL地址");								//如果传递参数个数比较多,可以对传递的参数进行封装								List params = new ArrayList();								params.add(new BasicNameValuePair("id", id));								params.add(new BasicNameValuePair("psw", psw));								//设置请求参数								post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));																HttpClient httpClient@本文9来源gao($daima.com搞@代@#码8网^搞代gaodaima码 = new DefaultHttpClient();								//发送POST请求								HttpResponse response = httpClient.execute(post);								//如果服务器成功地返回响应								if(response.getStatusLine().getStatusCode() == 200) {									//String msg = EntityUtils.toString(response.getEntity());									HttpEntity entity = response.getEntity();									InputStream is = entity.getContent();																		BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8"), 8);									StringBuilder sb = new StringBuilder();									sb.append(reader.readLine() + "\n"); // 这里 “ + "\n" ”加不加似乎对结果没有什么影响																		String line = "0";									while((line = reader.readLine()) != null) {										sb.append(line + "\n"); // 这里 “ + "\n" ”加不加似乎对结果没有什么影响									}									is.close();																		//获取请求响应结果									String result = sb.toString();									System.out.println(result);																		//打包成JSON进行解析									JSONArray jsonArray = new JSONArray(result);									JSONObject jsonData = null;									//返回用户ID,用户密码									String userId = "";									String userPsw = "";									//使用List进行存储									List data = new ArrayList();									for(int i = 0; i < jsonArray.length(); i++) {										jsonData = jsonArray.getJSONObject(i);										userId = jsonData.getString("userId"); //userId是来源于服务器端php程序响应结果res的索引,根据索引获取值										userPsw = jsonData.getString("userPsw"); //userPsw是来源于服务器端php程序响应结果res的索引,根据索引获取值										data.add("用户ID:" + userId + ",用户密码:" + userPsw); //保存返回的值,可进行相应的操作,这里只进行显示									}																		Looper.prepare();									Toast.makeText(MainActivity.this, data.toString(), Toast.LENGTH_LONG).show();									Looper.loop();								}								else {									Looper.prepare();									Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_LONG).show();									Looper.loop();								}							}							catch(Exception e) {								e.printStackTrace();							}						}					}.start();				}			}		});    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent Activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

而下面是一个服务器端php文件(文件内并未连接数据库的操作,如果希望的话,可以连接数据库,获取动态数据。对于php有所了解的人可以很容易的改成连接数据库获取数据的操作)

checkId.php

<?php	//获取客户端发送过来的ID和密码	$id=$_POST['id'];	$psw=$_POST['psw'];	if($id == "admin" && $psw == "123") {		$res=array(array());		$res[0]['userId']=$id;		$res[0]['userPsw']=$psw;		$res[1]['userId']="testId1";		$res[1]['userPsw']="testPsw1";		$res[2]['userId']="testId2";		$res[2]['userPsw']="testPsw2";	}	echo json_encode($res);?>

以上就介绍了Android+PHP 使用HttpClient提交POST的请求,使用JSON解析响应,包括了gravity,Apache,Exception,索引,连接数据库方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Android+PHP 使用HttpClient提交POST的请求,使用JSON解析响应

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址