向Web站点发送GET请求、POST请求,并从Web站点取得响应

2023-05-16

       建议在查看以下代码之前,先去了解有关HTTP请求和HTTP响应的相关知识(如请求与响应的内容)。      

       这里提供了一个发送GET、POST请求的工具类,源代码摘抄自 《疯狂 Android讲义(第2版)》一书。主要是为了方便查阅,在此记录。

       这个工具类,我们可以配合我们自己所写的服务器端文件来操作数据库实现Android应用的联网操作。

GetPostUtil.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class GetPostUtil {
	/*
	 * 向指定URL发送GET方法的请求
	 * @param url 发送请求的URL
	 * @param params 请求参数,请求参数应该是name1=value1&name2=value2的形式。
	 * @return URL所代表远程资源的响应
	 */
	public static String sendGet(String url, String params) {
		String result = "";
		BufferedReader in = null;
		try {
			String urlName = url + "?" + params;
			URL readUrl = new URL(urlName);
			//打开和URL之间的连接
			URLConnection conn = readUrl.openConnection();
			//设置通用的请求属性
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
			//建立实际的连接
			conn.connect();
			//获取所有响应头字段
			Map<String, List<String>> map = conn.getHeaderFields();
			//遍历所有的响应头字段
			for(String key : map.keySet()) {
				System.out.print(key + "--->" + map.get(key));
			}
			//定义BufferedReader输入流来读取URL的响应
			in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			while((line = in.readLine()) != null) {
				result += "\n" + line;
			}
		}
		catch (Exception e) {
			System.out.println("发送GET请求出现异常! " + e);
			e.printStackTrace();
		}
		//使用finally块来关闭输入流
		finally {
			try {
				if(in != null) {
					in.close();
				}
			}
			catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		
		return result;
	}
	
	/**
	 * 向指定URL发送POST方法的请求
	 * @param url 发送请求的URL
	 * @param params 请求参数,请求参数应该是 name1=value1&name2=value2的形式。
	 * @return URL所代表远程资源的响应
	 */
	public static String sendPost(String url, String params) {
		PrintWriter out = null;
		BufferedReader in = null;
		String result = "";
		try {
			URL realUrl = new URL(url);
			//打开和URL之间的连接
			URLConnection conn = realUrl.openConnection();
			//设置通用的请求属性
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
			//发送POST请求必须设置如下两行
			conn.setDoOutput(true);
			conn.setDoInput(true);
			//获取URLConnection对象对应的输出流
			out = new PrintWriter(conn.getOutputStream());
			//发送请求参数
			out.print(params);
			//flush输出流的缓冲
			out.flush();
			//定义BufferedReader输入流来读取URL的响应
			in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			while((line = in.readLine()) != null) {
				result += "\n" + line;
			}
		}
		catch(Exception e) {
			System.out.println("发送POST请求出现异常!" + e);
			e.printStackTrace();
		}
		//使用finally块来关闭输出流、输入流
		finally {
			try {
				if(out != null) {
					out.close();
				}
				if(in != null) {
					in.close();
				}
			}
			catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return result;
	}
}
      

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向Web站点发送GET请求、POST请求,并从Web站点取得响应 的相关文章

  • 迷宫老鼠游戏

    迷宫老鼠游戏 题目 以一个m n的长方阵表示迷宫 xff0c 0 和 1 分别表示迷宫中的通路和障碍 请设计一个算法 xff0c 对任意设定的迷宫 xff0c 求出一条从入口到出口的通路 xff0c 或得出没有通路的结论 xff1b 如果有
  • java通过JDBC链接SQLServer2012

    下面请一字一句地看 xff0c 一遍就设置成功 xff0c 比你设置几十遍失败 xff0c 费时会少得多 首先 xff0c 在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份
  • 完整java开发中JDBC连接数据库代码和步骤

    转载自 xff1a Hongten JDBC连接数据库 创建一个以JDBC连接数据库的程序 xff0c 包含7 个步骤 xff1a 1 加载JDBC驱动程序 xff1a 在连接数据库之前 xff0c 首先要加载想要连接的数据库的驱动到JVM
  • 浅析网站 APP 登录界面设计

    无论网页或是移动APP的设计 xff0c 很重要的一点是如何能在小而美和功能复杂性之间找到平衡点 本文就移动APP表单设计进行浅析 xff0c 看设计师是如何在设计与交互体验之间做到小而美的平衡 一 极致的减法 这是一个异于常规设计思路而得
  • Android应用开发EditText文本内容变化监听方法

    package com google import android app Activity import android os Bundle import android text Editable import android text
  • Android背景渐变色(shape,gradient)

    转载自 xff1a http l62s iteye com blog 1659433 Android设置背景 色可以通过在res drawable里定义一个xml 如下 xff1a 代码 xml代码 xff1a lt xml version
  • Android 自定义CheckBox 样式

    转载自 xff1a http www open open com lib view open1392187282067 html 有些时候需要根据项目需求自定义CheckBox 的样式 xff0c 步骤如下 xff1a 1 首先在drawa
  • 定制个性化的 Android Checkbox 图标

    首发来自 http blog csdn net garretly 转载注明出处 先大概说一下 这里用到的技术比较简单没有多大的技术含量 关键是大家如何去理解 以及自我更新 好了 这里上代码 在 工程目录下 gt res gt drawabl
  • 解决ssl connect error问题

    curl版本过低 xff0c 升级curl php重新编译 xff0c 指定curl库解决
  • RadioGroup以及RadioButton自定义样式的使用

    转载自 xff1a RadioGroup以及RadioButton自定义样式的使用 RadioButton从字面上就可以很清楚的知道它是单选按钮 xff0c 它与RadioGroup配套时候 通常我们在开发中需要自定义RadioButton
  • 两种方式实现类似qq搜索的切换

    转载自 xff1a 点击打开链接 http www csdn net tag searchview qq的搜索功能在点击搜索框时整个页面上移 xff0c 出现透明布局 该效果是模仿iOS实现的 xff0c 但是在Android也是很容易实现
  • android---xml---include用法(导入另一个XML文件到本布局中)

    转载自 xff1a 点击打开链接 Android在xml文件中可使用include包含其他定义好的布局 xff0c 可以将多处用到的布局单独出来 xff0c 然后用include包含进来 xff0c 这种包含方法相当于把原来布局的一部分代码
  • Android开发技巧之像QQ一样输入文字和表情图像

    转载自 xff1a 点击打开链接 QQ聊天输入框 xff0c 在输入框中可以同时输入文字和表情图像 实际上 xff0c 这种效果在Android SDK中只需要几行代码就可以实现 本文将会介绍如何实现像QQ一样输入表情图像 EditText
  • Android调用相机并将照片存储到sd卡上

    转载自 xff1a 点击打开链接 Android中实现拍照有两种方法 xff0c 一种是调用系统自带的相机 xff0c 然后使用其返回的照片数据 还有一种是自己用Camera类和其他相关类实现相机功能 xff0c 这种方法定制度比较高 xf
  • Android学习长按列表项弹出菜单 给菜单项添加事件 获取上下文

    转载自 xff1a 点击打开链接 这里是先显示一个listview 长按listview的一个列表项 xff0c 弹出一个菜单来 xff0c 菜单有两个条目 xff0c 更新该条 和 删除该条 xff0c 并且这两条都有监听事件 xff0c
  • 通过MediaStore获取Audio信息

    转载自 xff1a 点击打开链接 Android系统提供了MediaScanner xff0c MediaProvider xff0c MediaStore等接口 xff0c 并且提供了一套数据库表格 xff0c 通过Content Pro
  • Android自定义搜索框(EditText)的搜索功能实现,过滤ListView

    实现自定义搜索框 xff08 实际上就是一个EditText xff09 xff1a lt RelativeLayout android id 61 34 64 43 id music search rl 34 android layout
  • Android自定义SwitchButton左右滑动开关按钮控件

    转载自 xff1a 点击打开链接 以前在项目中做过一个类似滑动开关的 但是可惜的是只能用点的方式去操作 总感觉不完美 在网上查阅资料后 稍稍的改进了一下 添加了滑动事件 封装了一个 SwitchButton 的类 分享给大家 希望对大家有用
  • Android开发使用MediaRecorder进行录音

    在说手机android开发如何使用MediaRecorder进行录音前 xff0c 我先来说一下如何在手机SD卡或手机内存上定义路径吧 xff08 优先存储在SD卡上 xff09 获取存放图片或录音文件的路径 xff08 手机内存上或内存卡
  • Visual Studio 2017/2015远程调试Linux程序(opencv)

    liu

随机推荐