java NameValuePair 实现 模拟 表单访问 服务 传输各类型数据
背景
今天通过api接口访问服务端,但是一直提示发送参数为空,后来使用NameValuePair 发送成功,记录在此,方便以后使用。
发送表单数据
/*** 发送消息* * @param url 地址* @param param 参数* @throws IOException*/public String sendPostRequest(String url,NameValuePair[] param) throws HttpException, IOException {String responseStr = "";HttpClient httpClient = new HttpClient();PostMethod postMethod = new PostMethod(url);postMethod.setRequestHeader("accept", "*/*");postMethod.setRequestHeader("connection", "Keep-Alive");postMethod.setRequestHeader("yonghong-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");postMethod.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// 将表单的值放入postMethod中postMethod.setRequestBody(param);// 执行postMethodint statusCode = httpClient.executeMethod(postMethod);BufferedReader in = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream(), "utf-8"));StringBuffer sb = new StringBuffer();int len;while ((len = in.read()) != -1) {sb.append((char) len);}responseStr = sb.toString();in.close();postMethod.releaseConnection();return responseStr;}
编辑一个xml类型数据
data = "<?xml version='1.0' encoding='UTF-8'?>\n"+"<info>\n"+" <user>\n"+" <name>"+userName+"</name>\n"+" <pass>"+password+"</pass>\n"+" <email></email>\n"+" <alias>"+userName+"</alias>\n"+" <parent></parent>\n"+" <roles>xx</roles>\n"+" </user>\n"+"</info>";param = new NameValuePair[]{new NameValuePair("xmlData", data)};url = biAddress + "/serxasasce/aasasaspi?action=saveNode&type=user&token=" + token + "&IS=" + UUID.randomUUID();System.out.println(sendPostRequest(url, param));
示例:
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.UUID;/**
* 执行表单任务
*
*
*/
public class ExecuteFrom {/*** 发送消息* * @param url 地址* @param param 参数* @throws IOException*/public String sendPostRequest(String url,NameValuePair[] param) throws HttpException, IOException {String responseStr = "";HttpClient httpClient = new HttpClient();PostMethod postMethod = new PostMethod(url);postMethod.setRequestHeader("accept", "*/*");postMethod.setRequestHeader("connection", "Keep-Alive");postMethod.setRequestHeader("yonghong-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");postMethod.setRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// 将表单的值放入postMethod中postMethod.setRequestBody(param);// 执行postMethodint statusCode = httpClient.executeMethod(postMethod);BufferedReader in = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream(), "utf-8"));StringBuffer sb = new StringBuffer();int len;while ((len = in.read()) != -1) {sb.append((char) len);}responseStr = sb.toString();in.close();postMethod.releaseConnection();return responseStr;}//ready porject public static void main(String[] args) throws Exception{new ExecuteFrom().action(0);}/*** 执行任务传入xml等数据* * @param i* @throws HttpException* @throws IOException*/public void action(int i) throws HttpException, IOException {final String biAddress = "http://101.110.11.94:8080";String adminName = "admsdin";String adminPassword = "Bxsdsd526";String userName = "wasdsdwu";String password = "abcdsdsdfj111!";//获取tokenString url = biAddress + "/bsdsdi/apsdsdi?action=login&adminv=" + adminName + "&passv=" + adminPassword + "&IS=" + UUID.randomUUID();NameValuePair[] param = new NameValuePair[]{};String result = sendPostRequest(url, param);String token = result.substring(result.indexOf("<message>")+"<message>".length(), result.indexOf("</message>"));System.out.println(token);String data = "";String path = "";if(i == 0) {//创建用户data = "<?xml version='1.0' encoding='UTF-8'?>\n"+"<info>\n"+" <user isOverWrite='true'>\n"+" <name>"+userName+"</name>\n"+" <pass>"+password+"</pass>\n"+" <email></email>\n"+" <alias>"+userName+"</alias>\n"+" <parent></parent>\n"+" <roles>developer_role</roles>\n"+" </user>\n"+"</info>";param = new NameValuePair[]{new NameValuePair("xmlData", data)};url = biAddress + "/bi/api?action=saveNode&type=user&token=" + token + "&IS=" + UUID.randomUUID();System.out.println(sendPostRequest(url, param));}else if(i == 1) {//获取用户信息 data = "<?xml version='1.0' encoding='UTF-8'?>\n"+"<ref>\n"+" <type>user</type>\n"+"</ref>";param = new NameValuePair[]{new NameValuePair("xmlData", data)};url = biAddress + "/bi/api?action=getNode&returnPwd=no&token=" + token + "&IS=" + UUID.randomUUID();System.out.println(sendPostRequest(url, param));}else if(i == 2) {//登出url = biAddress +"/bi/api?action=logout&IS=" + UUID.randomUUID();param = new NameValuePair[]{new NameValuePair("token", token)};System.out.println(sendPostRequest(url, param));}}}
api介绍:
构造函数摘要 |
|
NameValuePair() 默认构造函数。 |
|
NameValuePair(String name, String value) 构造函数。 |
方法摘要 |
|
boolean |
equals(Object object) |
String |
getName() 返回名称。 |
String |
getValue() 返回当前值。 |
int |
hashCode() |
void |
setName(String name) 设置名称。 |
void |
setValue(String value) 设置值。 |
String |
toString() 获取此对的字符串表示形式。 |
从类java.lang继承的方法 |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造函数详细信息 |
NameValuePair
public NameValuePair()
默认构造函数。
NameValuePair
public NameValuePair(String name, String value)
构造函数。
参数:
name - 名字。
value - 价值。
方法细节 |
setName
public void setName(String name)
设置名称。
参数:
name - 新名字
也可以看看:
getName()
getName
public String getName()
返回名称。
返回:
字符串名称名称
也可以看看:
setName(String)
设定值
public void setValue(String value)
设置值。
参数:
value - 新价值。
的getValue
public String getValue()
返回当前值。
返回:
字符串值当前值。
toString
public String toString()
获取此对的字符串表示形式。
覆盖:
toString 在班上 Object
返回:
字符串表示。
等于
public boolean equals(Object object)
覆盖:
equals 在班上 Object
hashCode
public int hashCode()
覆盖:
hashCode 在班上 Object
持续更新
java NameValuePair 实现 模拟 表单访问 服务 传输各类型数据相关推荐
- jQuery validate 表单验证,涵盖各种类型数据
本来觉得用这个会很难,结果试了试,发现却是简单了不少东西啊,什么getElementById,if 什么的,只用几个属性名 什么的就可以解决不同状态显示不同提示,很强大很方便. <%@ page ...
- java 表单请求_java模拟表单请求
表单普通字段 public class FormFieldKeyValuePair { private static final long serialVersionUID = 1L; // The ...
- php模拟表单提交登录,PHP模拟表单的post请求实现登录
'stuid' => $stuid, 'pwd' => $pwd ); $ch = curl_init (); //初始化curl curl_setopt ( $ch, CURLOPT_U ...
- 为什么要模拟表单提交
为什么要模拟表单提交 现在许多的网站都是需要登录验证后才能访问该网站的页面,爬虫(网络机器人[spider])该怎么获取这些页面呢!是的,爬虫也是需要登录的,才能获取到后面的页面. 爬虫怎么模拟表单登 ...
- python图书馆抢座_python模拟表单提交登录图书馆
本文实例为大家分享了python模拟登录图书馆的具体代码,供大家参考,具体内容如下 模拟表单提交的原理: 我们都知道Http是无状态的,所以当我们提交的数据和浏览器中正常提交一样,那么服务器就会返回和 ...
- php 模拟表单提交-get-post
<?php header("Content-Type: text/html; charset=utf-8");/*** Class SimulantForm 模拟表单*/ c ...
- js模拟表单html形式,JS模拟并美化的表单控件完整实例
本文实例讲述了JS模拟并美化的表单控件效果实例.分享给大家供大家参考.具体如下: 这里演示使用JS美化并模拟网页表单控件,十分漂亮的表单效果,使用时可以将代码内的JS保存为文件, 方便调用,使用方法: ...
- java 动态导出excel表单 无模板文件下载
java 动态导出excel表单 无模板文件下载 public ResponseEntity<byte[]> exportStanding(@PathVariable Long signu ...
- java 动态导出excel表单 无模板本地生成
java 动态导出excel表单 无模板本地生成 这里使用的是alibaba的公共类excelWriter,注意在pom文件中要引入easyExcel的依赖 public void exportExc ...
最新文章
- 普通域账号客户端计算无关机选项
- 用Everything搜索指定的路径
- golang实现图片上传和下载
- [蓝桥杯][2019年第十届真题]等差数列
- 小结-python连接redis的基本配置-解决远程连接问题
- python网络编程学习笔记(二)
- 集成学习中的随机森林
- 【VR】Leap Motion 官网文档 FingerModel (手指模型)
- python基本规则语法
- python少儿编程教案_超好玩的Python少儿编程
- 动态ActionForm
- 《东周列国志》第五回 宠虢公周郑交质 助卫逆鲁宋兴兵
- 专业能力和表达能力,你觉得哪个更重要?
- 下面关于在dos停止mysql_下面关于在DOS停止MySql的命令中,正确的是 (5.0分)_学小易找答案...
- Linux下各种压缩文件的解压方法
- 如何进行移动端页面开发
- 华为 博士 实习_如何看待华为招聘生物博士实习生?
- 基于Netty实现的尬聊聊天室
- 2021全国人工智能师资培训正式“开课”,百度飞桨助力高校教师提升AI“超能力”...
- 自己遇到的Java软件工程师部分面试题(带答案解析)