android客户端向web服务器传递参数主要用到了HttpURLConnection类,通过这个类,我们可以获取到指定url的连接,在其中我们可以通过设定请求的方法是Post还是get,采用get方法相对容易,我们通过观察浏览器中url可以发现,提交的参数和参数值都被附着到了URL的后面,因此在android客户端中同样是将参数和参数值直接附着在URL后面,而post方法向对方复杂,需要我们设置一些参数,并且以输出流的形式向服务器端传递参数。
下面代码实现了 将客户端中用户名和密码传递到服务器端
public class MainActivity extends Activity {
private Button loginButton;
private EditText usernameText;
private EditText passwordText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginButton = (Button) this.findViewById(R.id.login);
usernameText = (EditText) this.findViewById(R.id.username);
passwordText = (EditText) this.findViewById(R.id.password);
loginButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String username = usernameText.getText().toString();
String password = passwordText.getText().toString();
Map<String,String> map = new HashMap<String,String>();
map.put("username", username);
map.put("password",password);
boolean result = RequestHandler.sendGetRequest(map);
if(result){
Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
}
}
});
}
@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;
}
}
下面是RequestHandler类的代码
public class RequestHandler {
/*
* 通过get方法向服务器发送请求,主要是将请求的参数和参数值附着在请求地址后面。
*/
public static boolean sendGetRequest(Map<String,String> params){
StringBuilder path = new StringBuilder("http://169.254.220.210:8080/android/LoginServlet?");
for(Map.Entry<String, String> entry:params.entrySet()){
path.append(entry.getKey());
path.append("=");
path.append(entry.getValue());
path.append("&");
}
path.deleteCharAt(path.length()- 1); //去掉最后一个参数后面多余的&
try {
URL url = new URL(path.toString());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(500);
connection.setRequestMethod("GET");
if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){
return true;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
}
public static boolean sendPostRequest(Map<String,String> params){
StringBuilder data = new StringBuilder();
for(Map.Entry<String, String> entry : params.entrySet()){ //设置请求的参数
data.append(entry.getKey());
data.append("=");
data.append(entry.getValue());
data.append("&");
}
data.deleteCharAt(data.length() - 1);
try {
HttpURLConnection post = (HttpURLConnection) new URL("http://169.254.220.210:8080/android/LoginServlet"). openConnection();
post.setConnectTimeout(500);
post.setDoOutput(true); //一定要将可以输出参数设置为true
post.setRequestProperty("Content-Length",String.valueOf(data.length())); //必须设定请求的长度
post.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//必须设定请求的内容
OutputStream out = post.getOutputStream();
out.write(data.toString().getBytes()); //通过输出流将参数输出
//在输出参数之后一定要获取响应的某项内容,才能真正的发出post请求,在这里获取响应的状态码
if(post.getResponseCode() == HttpURLConnection.HTTP_OK){
return true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return true;
}
return false;
}
}
分享到:
相关推荐
Android通过get,post方式客户端与服务器端交互实例,一个简单的demo,在客户端中输入参数,传给服务器端并打印出来。
android 客户端向服务器端上传数据 用了post和get请求 包括协议的如何拼接怎么向服务端发送xml数据 都已经封装好了 方法 可以直接使用!包含了文件的上传
android客户端和服务器端很简单的传值,有get和post两种方式。
struts2+Mysql搭建的服务端 +android 客户端 post,get请求、 一整套完善的代码 sql也在里面导入进去就可以使用了
C# WebService 客户端 服务器 Get Post;C# WebService 客户端 服务器 Get Post
android通过POST和GET向服务器发送数据.包括使用普通HTTP协议发送和使用android内置的HttpClient进行发送。
介绍如何通过HttpClient模块来创建Http连接,并分别以Http GET与Http POST方法来传递参数,连接之后取回Web Server的返回网页结果。重点是如何使用HttpClient的模块来完成Http的请求与应答。 分享参考自Android SDK...
andriod Volley的HTTP网络通信,包含get、post请求,获取String/JsonObject/JsonArray数据(android客户端+java服务器端)
.net 后台Post,get方式调用webapi,包括上传文件
一般而言,Android 应用在请求数据时都是以 Get 或 Post 等方式向远程服务器发起请求,那你有没有想过其实我们也可以在 Android 设备上搭建一个小型 Web 服务器,并且实现常规的下载图片、下载文件、提交表单等功能...
Android通过get,post方式客户端与服务器端交互实例,一个简单的demo,在客户端中输入参数,传给服务器端并打印出来.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
以GET或者POST方式向网页提交参数!我们知道如 果是GET的请求方式,那么所有参数都直接放到页面的URL后面用问号与页面地址隔开,每个参数用&隔开
此demo演示android通过get和post请求方法同服务器交互,测试需要tomcat,具体参考 http://blog.csdn.net/youmingyu/article/details/52524538
采用httpclient发送xml报文,httpServer接收报文。两个程序一看就明白可以直接调用执行不在多说。
android客户端与web服务器端的文件上传与下载源代码,和android录音功能。 HttpDownloader.java:下载文件 FileUtil.java:post方法上传文件 MainActivity.java:录音功能 TestFileActivity.java:测试文件的上传与...
这个是关于android的OkHttp3框架的代码实例,里面包括POST和GET请求,请大家多多指教。
一个关于Android客户端请求服务器端代码,涉及到Get/Post请求和Android中android-async-http-master插件的使用。
NULL 博文链接:https://1124117571.iteye.com/blog/2298415
retrofit 简单封装 实现公共参数get和post统一处理,上传和下载带进度显示,图片和本文一起提交
Android post 服务器 代码 还不错 可以开发成通用性的接口