位置: 编程技术 - 正文

安卓中的HTTP编程

编辑:rootadmin
1、几个概念HTTP(HyperText Transport Protocol)超文本传输协议。HTTPClient是用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且支持HTTP协议的最新的版本和建议。HTTPClient就是专门设计用来简化HTTP客户端与服务器间各种通信编程的。通过它可以让原来很复杂的事情现在很轻松解决。URI(uniform resource identifier)代表统一资源标识符。URL(uniform resource locator)代表统一资源定位符。URLConnection则代表了应用程序和URL之间的通信连接,通过URLConnection类的实例可以读取和写入此URL应用的资源。2、关于HTTPHTTP的URL&#;式: Request-URI HTTP-Version CRLF例如:GET/form.html HTTP/1.1 (CRLF)响应报文由请状态行、响应报头、空行和响应正文4个部分组成状态行&#;式如下:HTTP-Version Status-Code Reason-Phrase CRLF例如:HTTP/1.1 OK (CRLF)3、通过URL对象获得资源public final InputStream openStream()URL---->InputStream---->Java程序4、HTTPClient(1)Get在HttpClient的使用Get方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用Get方法时,请求参数和对应的&#;附加在URL后面,利用一个问号("?")代表URL的结尾与请求参数的开始。//通过Get方法获取页面信息//参数为对应页面的URLpublic static InputStream getInputStreamFromUrl(String url){//定义输入流变量InputStream content=null;try{//取得默认的HTTPClient实例HTTPClient httpClient=new DefaultHttpClient();//创建HttpGet实例,连接到服务器HttpResponse response=httpClient.execute(new HttpGet(url));//获取数据内容content=response.getEntity().getContent();}catch(Exception e){}//以InputStream形式返回页面信息return content;}上面的GET方法是以InputStream的形式放回页面的信息,很多情况下需要以StringBuider、String等字符串的&#;式。下面的方法把InputStream&#;式转为StringBuider和String&#;式。//将InputStream&#;式转化为StringBuider&#;式private StringBuider inputStreamToStringBuider(InputStream is){//定义空字符串String line="";//定义StringBuider的实例totalStringBuider total =new StringBuider();//定义BufferedReader,载入InputStreamReaderBufferedReader rd=new BufferedReader(new InputStreamReader(is));//readLine是一个阻塞的方法,当没有断开连接的时候就会一直等待,直到有数据返回//返回null表示读到数据流最末尾while((line=rd.readLine())!=null){total.append(line);}//以StringBuider形式返回数据内容return total;}//将InputStream&#;式转化为String&#;式private String inputStreamToString(InputStream is){//定义空字符串String s="";String line="";//定义BufferedReader,载入InputStreamReaderBufferedReader rd=new BufferedReader(new InputStreamReader(is));//读取到字符串中while((line=rd.readLine())!=null){s&#;=line;}//以String形式返回数据内容return s;}(2)Post在HttpClient的使用Post方法要求被请求服务器接收附在请求后面的数据,常用于提交表单。当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称&#;的形式出现,可以传输大量数据。public void postData() {//创建一个新的HTTPClient Post头HttpClient httpClient=new DefaultHttpClient();HttpPost httpPost=new HttpPost(" {//添加数据List<NameValuePair> nameValuePairs=new ArrayList<NameValuePair>(2);nameValuePairs.add(new BasicNameValuePair("id",""));nameValuePairs.add(new BasicNameValuePair("stringdata","myString"));//使用utf-8&#;式对数据进行编码httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));//执行HTTPPOST请求HttpResponse response=httpClient.execute(httpPost);}catch(ClientProtocolException e){}catch (Exception e) {}}(3)使用HttpClient需要以下7个步骤:步骤1:创建HTTPClient的实例。HttpClient httpClient=new DefaultHttpClient();步骤2:创建某种连接方法的实例,对于get方法时GetMethod,而对于post方法是PostMethod。HttpGet rquest = new HttpGet(String url);HttpPost rquest = new HttpPost(String url);步骤3:对于HttpPost对象而言,可以调用setEntity(HttpEntity entity)方法来设置请求参数。ArrayList<NameValuePair> params=new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("name",user));params.add(new BasicNameValuePair("pwd",pwd));request.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));步骤4:调用步骤1中创建好的实例的execute方法来执行步骤2中创建好的method实例,执行完该方法返回一个HttpResponse对象。HttpResponse response=httpClient.execute(request);步骤5:处理HttpResponse对象,调用HttpResponse对象的get...会得到响应的内容。String msg=EntityUtils.toString(response.getEntity());步骤6:释放连接。步骤7:对得到的内容进行处理。5、URLConnection(1)关键部分代码URL url=new URL(" uc=url.openConnection();HttpURLConection huc=(HttpURLConection)uc;//连接,可有可无huc.connect();int response=huc.getResponseCode();if(response==HttpURLConnection.HTTP_OK){……huc.disconnect();}else if(response==HttpURLConnection.HTTP_NOT_FOUND){……}//URLConnection里的两个重要方法getInputStream()和getOutputStream()InputStream inputStream=huc.getInputStream();byte[] b=new byte[inputStream.available()];inputStream.read(b);String msg=new String(b);(2)使用URLConnection有以下5个步骤:步骤一:根据URL获得URLConnection对象,并将其强制转换为其子类对象HttpURLConnection。步骤二:由于默认请求为GET请求,直接可以调用connect()方法。步骤三:在请求已被成功接受的情况下,获得该URL的InputStream输入流。步骤四:包装InputStream输入流,将其还原成原来的资源。步骤五:断开连接。6、使用HttpClient和URLConnection访问维基百科(1)使用HttpClient访问//给出访问的URLString wikiSearchURL = " httpClient=new DefaultHttpClient();//创建HttpGetHttpGet httpGet=new HttpGet(wikiSearchURL);//创建ResponseHandlerResponseHandler<String> responseHandler=new BasicResponseHandler();try {//获取返回的内容String content=httpClient.execute(httpGet, responseHandler);//提示连接成功Toast.makeText(getApplicationContext(), "连接维基百科成功", Toast.LENGTH_SHORT).show();//显示到应用界面上showWiki.setText(content);} catch (Exception e) {//提示连接失败Toast.makeText(getApplicationContext(), "连接维基百科失败", Toast.LENGTH_SHORT).show();e.printStackTrace();}//关闭连接httpClient.getConnectionManager().shutdown();(2)使用URLConnection访问//给出访问的URLString wikiSearchURL = " {//初始化URLURL url=new URL(wikiSearchURL);//创建HttpURLConnection,并打开连接HttpURLConnection httpconn=(HttpURLConnection) url.openConnection();//连接,可有可无httpconn.connect();//判断获取的应答码是否正常if(httpconn.getResponseCode()==HttpURLConnection.HTTP_OK){//给出连接成功的提示Toast.makeText(getApplicationContext(), "连接维基百科成功", Toast.LENGTH_SHORT).show();//创建InputStreamReader,设置字符编码为utf-8InputStreamReader isr=new InputStreamReader(httpconn.getInputStream(),"utf-8");int i;String content="";//读取消息到content中while ((i=isr.read())!=-1) {content=content&#;(char)i;}isr.close();//将获取的内容显示到界面上showWiki.setText(content);}//断开连接httpconn.disconnect();} catch (Exception e) {//提示连接失败Toast.makeText(getApplicationContext(), "连接维基百科失败", Toast.LENGTH_SHORT).show();e.printStackTrace();}

推荐整理分享安卓中的HTTP编程,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

安卓中的HTTP编程

版权声明:本文为博主原创文章,未经博主允许不得转载。

安卓监听EditText 一.TextWatcherwatcher=newTextWatcher()实例化TextWatcher,会有三个函数,简单易懂。二.et.addTextChangedListener(watcher);添加监听器给EditText。这样,当et里的文本发生

安卓模拟器错误PANIC: Could not open 问题:安卓模拟器错误PANIC:Couldnotopen参考解决办法:

安卓中的SOAP消息和WebService 1、SOAP消息简单对象访问协议(SimpleObjectAccessProtocol,SOAP)是一种标准化的通信规范,主要用于Web服务(WebService)。SOAP使用Internet应用层协议作为其传输

标签: 安卓中的HTTP编程

本文链接地址:https://www.jiuchutong.com/biancheng/381007.html 转载请保留说明!

上一篇:数字图像处理(三)特效----锐化(数字图像处理期末考试)

下一篇:安卓监听EditText(安卓监听事件)

  • 增值税发票认证在哪里
  • 以前年度遗留的个税怎么处理
  • 预收款增值税纳税义务发生时间与确认收入时间
  • 公司帮员工全额缴纳五险一金
  • 报销人和经办人怎么区分
  • 计税金额是含税还是不含税
  • 开发票商品类别与商品明细的区别
  • 结转损益管理费用在借方
  • 现金支出的一般程序
  • 个人处置打包债权取得的收入
  • 商贸公司购进农产品可以抵扣吗
  • 金税三期社保费管理客户端v1.0.088(生产环境)
  • 公司支付宝扣的钱去哪了
  • 城建税及教育费附加计提表
  • 工程已完工又发生了成本怎么处理
  • 个体户税务年报每年什么时候
  • 赠与房产再出售税费
  • 收到带息商业票据贴现会计处理
  • 建筑劳务预缴税款后怎么申报
  • cpu游戏性能天梯图2023
  • 补交去年的企业所得税怎么做账务处理
  • win10开机黑屏几秒
  • 汇算清缴申报表怎么填
  • macbook做bim
  • 失控发票的企业怎么处理
  • win10升级win11报错
  • 如何使用php
  • w11系统黑屏
  • php string函数
  • 触电了该怎么做
  • php入门例子
  • 会计科目的设置应该符合国家统一会计准则的规定
  • 对于个体工商户不需要满足累计经营三个月以上的条件
  • 收到债劵利息会减少吗
  • php的运算符主要包括哪些?
  • yolov5添加注意力机制真的有用吗?
  • android常用的集成开发工具有
  • k8s安装步骤
  • 房地产企业销售佣金税前扣除
  • 自动驾驶感知算法
  • React Hook - useEffecfa函数的使用细节详解
  • 加计抵减四项服务是什么?
  • 研发费用加计扣除2022政策
  • 帝国cms自动推送插件
  • 个人劳务报酬所得税税率
  • 开票额度超了怎么办
  • 零税率与免税有何区别
  • 国家企业信用公示信息公示
  • 城市维护建设税,教育费附加,地方教育费附加
  • 预付款已经开了发票要怎么做账
  • 工商年报中纳税总额怎么填
  • 公司法人与股东的区别
  • 会计付租金会计分录
  • 基建期罚款支出账务处理
  • 收购发票如何确认成本
  • 主营业务收入的计算公式
  • 红冲上一年度销售收入
  • 注销基本户必须注销专户吗
  • 工程公司本月没发工资
  • 借款和工程款可以分开吗
  • sql基本教程
  • deepin 2014系统下安装mysql数据库的方法步骤
  • 计算机上没有运行windows无线服务
  • windows 2000 server系统安装图解
  • xp系统桌面图标不见了,点什么都没用?
  • win10无法uefi
  • xp管理员账号密码
  • 如何手动修改VID与PID
  • linux历史操作
  • windows打开
  • jquery validate.js表单验证入门实例(附源码)
  • python 如何生成随机数
  • python科学绘图
  • vim tagbar
  • sdk和安卓版本
  • 河北省税务局发票查询系统
  • 浙江电子税务局移动端
  • 苏州税务系统
  • 行政单位,比如什么单位
  • 消费税可抵扣的分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设