Web通信中的Get、Post方法
首先我们要了解Tomcat,Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
意思就是说,下载Tomcat解压后,打开bin目录下的startup.bat,当运行出Server startup in ****ms后,就相当于运行了一个小型服务器,此时,我们就可以通过Activity进行Web通信。想实现Get、Post方法,还必须了解你下载的Webapps中的内容,具体在代码中会展现。
Get、Post在子线程中处理,因为如果在主线程中运行的话,AdroidStudio的一个特点是主线程中如果运行时间过长,运行时会结束运行,此时Get,Post这些费时间的操作要移到子线程中处理,这样可优化程序运行。
还需要注意一点的是,当调试程序是,手机和PC机要处于同一网段,即两者要连在同一个网内,局域网也好,外网也好。建议在PC上开放一个WIFI,手机连上WIFI,至于获得PC机的IP,快捷键Window+R键,输入cmd,在弹出的对话框内输入ipgonfit,可获得PC的IP。值得一说的是,Get,Post等方法基本都是固定程序,我上传了我用的Tomcat,希望有帮助。
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; import com.example.administrator.intent.R; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; public class WebActivity extends AppCompatActivity {
private TextView tv; //用于展现Get、Post方法的结果
private Button search,search1; //search表示Get方法,search1表示Post方法
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); search= (Button) findViewById(R.id.search); tv= (TextView) findViewById(R.id.tv); search1= (Button) findViewById(R.id.search1); search.setOnClickListener(new View.OnClickListener() { //172.23.72.1:8080表示PC机的IP地址
@Override
public void onClick(View v) {
String url="http://172.23.72.1:8080/HttpTest/index.jsp?option=getUser&uName=jerehedu";
new MygetJob().execute(url); //MygetJob为自己编写的方法
}
});
search1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("===","xxxxxxxx"); //Log等方法可用于判断程序是否运行此处
//也可以用Debug模式来判断
String[] arg=new String[2];
arg[0]="http://172.23.72.1:8080/HttpTest/index.jsp?option=getUser&uName=jerehedu";
arg[1]="option=getUser&uName=jerehedu";
new MyPostJob().execute(arg);
}
});
} public class MyPostJob extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
HttpURLConnection con = null;
InputStream is = null;
StringBuilder sbd = new StringBuilder();
try {
URL url = new URL(strings[0]);
con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5*1000);
con.setReadTimeout(5*1000);
con.setRequestMethod("POST");
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestProperty("Charset","UTF-8");
con.setRequestProperty("Content-type","application/x-www-form-urlencoded");
//params应该是这样的样式 => option=getUser&uName=jerehedu
String params = strings[1];
OutputStream os = con.getOutputStream();
os.write(params.getBytes());
os.flush();
os.close();
if(con.getResponseCode()==200){
is = con.getInputStream();
int next = 0 ;
byte[] b = new byte[1024];
while ((next = is.read(b))>0){
sbd.append(new String(b,0,next));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(con!=null){
con.disconnect();
}
}
return sbd.toString();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
tv.setText("POST请求结果:"+s);
}
} /**AsyncTask异步任务类
异步任务类的参数
第一个参数会传到doInbackgrond方法中
第三个参数指定doInbackgrond的返回值
doInbackgrond的返回值会被onPostExecute接收
*/
public class MygetJob extends AsyncTask<String,Void,String>{ //onPreExecute在主线程中执行命令,通常进度条的初始化
@Override
protected void onPreExecute() {
super.onPreExecute();
} //doInBackground在子线程中执行命令
@Override
protected String doInBackground(String... params) {
HttpURLConnection con=null;
InputStream is = null;
StringBuilder sbd=new StringBuilder();
try {
URL url=new URL(params[0]);
con = (HttpURLConnection)url.openConnection();
con.setConnectTimeout(5*1000);
con.setReadTimeout(5*1000);
/* Http响应码
200 成功
404 未找到
500 发生错误
*/
if(con.getResponseCode()==200){
is = con.getInputStream();
int next=0;
byte[] bt = new byte[1024];
while ((next=is.read(bt))>0){
sbd.append(new String(bt,0,next));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(is!= null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(con!=null){
con.disconnect();
}
}
return sbd.toString();
} //onPostExecute在UI线程中执行
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
tv.setText(s);
}
} }
Web通信中的Get、Post方法的更多相关文章
- 【测试方法】Web测试中bug定位基本方法
知识总结:Web测试中bug定位基本方法 涉及知识点:测试方法 在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出 ...
- [转]WinForm和WebForm下读取app.config web.config 中邮件配置的方法
本文转自:http://blog.csdn.net/jinbinhan/article/details/1598386 1. 在WinForm下读取 App.config中的邮件配置语句如下: Con ...
- [Flex] IFrame系列 —— 在flex的web应用中嵌入html的方法
在flex的web应用中,我们往往必须有嵌入html的需求,这时候你会发现IFrame很有用! flex而且可以和html中的JavaScript进行交互,flex可以通过iframe调用到html中 ...
- Web测试中定位bug的方法
在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出在那里,是测试人员需要掌握的,可以简单的使用浏览器自带开发者工具 ...
- 免费生成二维码接口,可直接嵌入到web项目中,附带嵌入方法,任意颜色二维码,任意大小二维码!
在线体验连接:http://www.zhaimaojun.top/qrcode/ 你是否在项目中寻找方便而且免费的可以直接嵌入到项目中的二维码生成工具呢?你找到了这里,说明你已经找到了!不要犹豫直接拿 ...
- Spring在web应用中获得Bean的方法
一:使用ApplicationContext获得Bean 首先新建一个类,该类必须实现ApplicationContextAware接口,改接口有一个方法,public void setApplica ...
- Java Web项目中解决中文乱码方法总结
一.了解常识: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不 ...
- web开发中会话跟踪的方法
1. 什么是会话 会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程. 2. 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视.(将用户与同一用户发出的不同请求之间关联, ...
- web开发中会话跟踪的方法有哪些
会话跟踪就是浏览器和服务器通信 1.cookie 2.session 3.隐藏input 4.url重写 5.ip地址
随机推荐
- TCP协议的3次握手与4次挥手过程详解
1.前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一 ...
- log4j学习日记-写入数据库
1.首先创建日志数据库 用的是MySQL CREATE TABLE `td_log` ( `lid` int(11) NOT NULL AUTO_INCREMENT, `lusername` ...
- 疯狂VirtualBOX 实战讲学录:小耗子之VirtualBOX修炼全程重现
疯狂VirtualBOX 实战讲学录:小耗子之VirtualBOX修炼全程重现 神级虚拟技术&云计算专家”小耗子”老师震撼分享 全球第—部完整深入的中文VirtualBox技术全程实战手册 全 ...
- Android adb opendir failed ,permission denied
最近在使用adb命令ls的时候会提示:adb opendir failed ,permission denied , 解决方法: adb shell cd data/data/pakageName l ...
- bzoj1853 bzoj2393
两题是类似的,这里说一下bzoj1853 首先我们求出所有的幸运号码,注意如果存在x是y的倍数则x不算在内,避免之后重复计算 下面我们就要统计幸运号码的倍数了,这显然是要用到容斥原理的 但是幸运号码很 ...
- Drools引擎学习
首先上一段话: 为提高效率,管理流程必须自动化,即使现代商业规则异常复杂.市场要求业务规则经常变化,系统必须依据业务规则的变化快速.低成本的更新.为了快速.低成本的更新,业务人员应能直接管系统中的规则 ...
- WIA
一台扫描仪,实际上就是一个Device对象,因此,我们可以通过DeviceManager来“获取”这台设备的“引用”,然后通过得到的Device对象,执行相应的扫描工作.从而跳过了使用ShowAcqu ...
- leetcode 栈 括号匹配
https://oj.leetcode.com/problems/valid-parentheses/ 遇到左括号入栈,遇到右括号出栈找匹配,为空或不匹配为空, public class Soluti ...
- The sum - SGU 122(斐波那契前N项和)
直接上代码....... ======================================================================================= ...
- SharePoint 2013的100个新功能之网站管理(二)
一:SharePoint 2013的网站策略 网站策略指的是自动关闭或删除网站的条件.有四个选项:不自动关闭或删除网站.自动删除网站.自动关闭并删除网站和运行一个工作流来关闭.删除网站. 二:新的主题 ...