首页 > 编程知识 正文

post复杂表单(表单post提交)

时间:2023-05-05 07:17:17 阅读:76410 作者:129

packagecom.mobile.utils; import com.Alibaba.fast JSON.JSON object; importorg.apache.log4j.Logger; import java.io.*; import Java.net.httpurl connection; import Java.net.malformedurlexception; importjava.net.URL; import java.util.*; publicclasshttputil { staticloggerlog=logger.getlogger (http util.class ); /**向指定的URL发送GET方法的请求

*

*@paramhttpurl

*要求参数用? 在url之后连接时,请求参数应该为name1=value1name2=value2的形式。

* @返回结果表示的远程资源的响应结果*

publicstaticstringdoget (string httpurl ) {

httpurlconnectionconnection=null;

InputStream is=null;

缓冲读取程序br=null;

字符串结果=null; //返回结果字符串

创建try{//远程url连接对象

URLURL=newurl(httpurl; //在远程url连接对象上打开一个连接,并将其强烈转换为httpURLConnection类

connection=(httpurlconnection ) url.openConnection ); //设定连接方式: get

connection.setrequestmethod (' get ); //设置与主机服务器的连接超时时间: 15000毫秒

connection.setconnecttimeout (15000; //设定读取远程返回数据的时间: 60000毫秒

connection.setreadtimeout (60000; //发送请求

connection.connect (; 通过connection连接获取输入流

if (connection.getresponse code (==200 ) )

is=connection.getInputStream (; //封装输入流is以指定字符集

br=newbufferedreader (newinputstreamreader (is,' UTF-8 ' ); //保存数据

string buffers BF=new string buffer (;

字符串temp=null; while((temp=br.readline ) )!=空) {

sbf.append (时间;

SBF.append('rn ' );

}

result=sbf.toString (;

}

}catch(malformedurlexceptione ) )

e .打印堆栈跟踪(;

}catch(ioexceptione ) {

e .打印堆栈跟踪(;

}关闭}finally{//资源

if (空!=br ) {try{

br.close (;

}catch(ioexceptione ) {

e .打印堆栈跟踪(;

}

(if ) null!=is ) {try{

is.close (;

}catch(ioexceptione ) {

e .打印堆栈跟踪(;

}

}

connection.disconnect (; //关闭远程连接

}返回结果;

}/***将POST方法请求发送到指定的URL

*

*@paramhttpUrl

*发送请求的URL

*@paramparam

*请求参数为{ ' key ' : '==g43 sevsucbcunfv3mhkizlho4iiu itr7wwxusvktk0yugjnzslr6qnb xsl8oqcuafycdcorkq 882 M6 ctti0q9 ucjsqqjjjvjvvtr

*@return代表的远程资源的响应结果*

publicstaticstringdopost (字符串httpurl,字符串参数)。

httpurl连接

connection= null;

InputStream is= null;

OutputStream os= null;

BufferedReader br= null;

String result= null;try{

URL url= newURL(httpUrl);//通过远程url连接对象打开连接

connection =(HttpURLConnection) url.openConnection();//设置连接请求方式

connection.setRequestMethod("POST");//设置连接主机服务器超时时间:15000毫秒

connection.setConnectTimeout(15000);//设置读取主机服务器返回数据超时时间:60000毫秒

connection.setReadTimeout(60000);//默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true

connection.setDoOutput(true);//默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无

connection.setDoInput(true);//设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。

connection.setRequestProperty("Content-Type", "application/json");//设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0

//connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");//通过连接对象获取一个输出流

os =connection.getOutputStream();//通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的

os.write(param.getBytes());//通过连接对象获取一个输入流,向远程读取

if (connection.getResponseCode() == 200) {

is=connection.getInputStream();//对输入流对象进行包装:charset根据工作项目组的要求来设置

br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

StringBuffer sbf= newStringBuffer();

String temp= null;//循环遍历一行一行读取数据

while ((temp = br.readLine()) != null) {

sbf.append(temp);

sbf.append("rn");

}

result=sbf.toString();

}

}catch(MalformedURLException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{//关闭资源

if (null !=br) {try{

br.close();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=os) {try{

os.close();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=is) {try{

is.close();

}catch(IOException e) {

e.printStackTrace();

}

}//断开与远程地址url的连接

connection.disconnect();

}returnresult;

}/***

*@paramhttpUrl 请求的url

*@paramparam form表单的参数(key,value形式)

*@return

*/

public staticString doPostForm(String httpUrl, Map param) {

HttpURLConnection connection= null;

InputStream is= null;

OutputStream os= null;

BufferedReader br= null;

String result= null;try{

URL url= newURL(httpUrl);//通过远程url连接对象打开连接

connection =(HttpURLConnection) url.openConnection();//设置连接请求方式

connection.setRequestMethod("POST");//设置连接主机服务器超时时间:15000毫秒

connection.setConnectTimeout(15000);//设置读取主机服务器返回数据超时时间:60000毫秒

connection.setReadTimeout(60000);//默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true

connection.setDoOutput(true);//默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无

connection.setDoInput(true);//设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0

//connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");//通过连接对象获取一个输出流

os =connection.getOutputStream();//通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的(form表单形式的参数实质也是key,value值的拼接,类似于get请求参数的拼接)

os.write(createLinkString(param).getBytes());//通过连接对象获取一个输入流,向远程读取

if (connection.getResponseCode() == 200) {

is=connection.getInputStream();//对输入流对象进行包装:charset根据工作项目组的要求来设置

br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

StringBuffer sbf= newStringBuffer();

String temp= null;//循环遍历一行一行读取数据

while ((temp = br.readLine()) != null) {

sbf.append(temp);

sbf.append("rn");

}

result=sbf.toString();

}

}catch(MalformedURLException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{//关闭资源

if (null !=br) {try{

br.close();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=os) {try{

os.close();

}catch(IOException e) {

e.printStackTrace();

}

}if (null !=is) {try{

is.close();

}catch(IOException e) {

e.printStackTrace();

}

}//断开与远程地址url的连接

connection.disconnect();

}returnresult;

}/*** 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串

*@paramparams 需要排序并参与字符拼接的参数组

*@return拼接后字符串*/

public static String createLinkString(Mapparams) {

List keys = new ArrayList(params.keySet());

Collections.sort(keys);

StringBuilder prestr= newStringBuilder();for (int i = 0; i < keys.size(); i++) {

String key=keys.get(i);

String value=params.get(key);if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符

prestr.append(key).append("=").append(value);

}else{

prestr.append(key).append("=").append(value).append("&");

}

}returnprestr.toString();

}public static voidmain(String[] args) {

String url= "http://localhost:8082/api/conf/findConfList?type=1";

String getResult=HttpUtil.doGet(url);

System.out.println(getResult);

url= "http://localhost:8082/api/core/login";

JSONObject json= newJSONObject();

json.put("key", "==g43sEvsUcbcunFv3mHkIzlHO4iiUIT R7WwXuSVKTK0yugJnZSlr6qNbxsL8OqCUAFyCDCoRKQ882m6cTTi0q9uCJsq JJvxS+8mZVRP/7lWfEVt8/N9mKplUA68SWJEPSXyz4MDeFam766KEyvqZ99d");

String postResult=HttpUtil.doPost(url, json.toJSONString());

System.out.println(postResult);

url= "http://localhost:8082/api/test/testSendForm";

Map map = new HashMap<>();

map.put("name", "测试表单请求");

String formResult=HttpUtil.doPostForm(url, map);

System.out.println(formResult);

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。