介绍
这篇文章主要讲解了java如何模拟发送格式的请求,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
我就废话不多说了,大家还是直接看代码吧!
包com.silot.test; 进口org.apache.http.HttpResponse; 进口org.apache.http.client.methods.HttpPost; 进口org.apache.http.entity.mime.HttpMultipartMode; 进口org.apache.http.entity.mime.MultipartEntity; 进口org.apache.http.entity.mime.content.StringBody; 进口org.apache.http.impl.client.DefaultHttpClient; 进口java.io.BufferedReader; 进口java.io.InputStream; 进口java.io.InputStreamReader; 进口charset; 公开课TestCli { 公共静态void main (String参数[])抛出异常 { MultipartEntity MultipartEntity=new MultipartEntity (HttpMultipartMode。BROWSER_COMPATIBLE,“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 ea3fcae38ff", Charset.defaultCharset ()); multipartEntity.addPart (“skey"新StringBody(“哈哈哈哈哈,,Charset.forName (“UTF-8"))); multipartEntity.addPart (“operator"新StringBody(“啦啦啦啦“,Charset.forName (“UTF-8"))); multipartEntity.addPart (“VrfKey"新StringBody(“渣渣渣“,Charset.forName (“UTF-8"))); multipartEntity.addPart (“StatCode"新StringBody (“00”, Charset.forName (“UTF-8"))); multipartEntity.addPart (“mass_id"新StringBody (“1234“, Charset.forName (“UTF-8"))); multipartEntity.addPart (“reference_id"新StringBody (“21231544“, Charset.forName (“UTF-8"))); HttpPost请求=new HttpPost (“http://xiefei.s1.natapp.cc/v1/withdrawCallback"); request.setEntity (multipartEntity); request.addHeader (“Content-Type"“附加项:格式;边界=- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 ea3fcae38ff"); DefaultHttpClient httpClient=new DefaultHttpClient (); HttpResponse响应=httpClient.execute(请求); .getContent InputStream是=response.getEntity () (); BufferedReader=新BufferedReader(新InputStreamReader(是)); StringBuffer缓冲=new StringBuffer (); 字符串行=?“; 在((=in.readLine行())!=null) { buffer.append(线); } System.out.println(“发送消息收到的返回:“+ buffer.toString ()); } }
<强> java模拟复杂表单后请求强>
java模拟复杂表单后请求
能支持文件上传
/* * *支持复杂表单,比如文件上传 * @param formParam * @return * @throws例外 */公共静态字符串postWithForm (FormParam FormParam)抛出异常{ 字符串url=formParam.getUrl (); 字符串charset=癠TF-8"; 字符串边界=Long.toHexString (System.currentTimeMillis ());//生成一些独特的随机值。 字符串CRLF=癨 r \ n";//行分隔符所需的多部分/格式。 URLConnection连接=新网址(URL) .openConnection (); connection.setDoOutput(真正的); connection.setRequestProperty (“Content-Type",“多部分/格式;边界=?+边界); 试( OutputStream输出=connection.getOutputStream (); PrintWriter作家=new PrintWriter(新OutputStreamWriter(输出字符集),真的); ) {//使身体参数 String> Map<字符串;bodyParam=formParam.getBodyParam (); 如果(零!=bodyParam) { (字符串p: bodyParam.keySet ()) { writer.append (“-”;+边界).append (CRLF); writer.append(“附加项:格式;name=\““+ p +“\““) .append (CRLF); writer.append(“内容类型:文本/平原;charset=?+字符集).append (CRLF); writer.append (CRLF) .append (bodyParam.get (p)) .append (CRLF) .flush (); } }//发送文件。 File> Map<字符串;fileParam=formParam.getFileParam (); 如果(零!=fileParam) { (字符串文件名:fileParam.keySet ()) { writer.append (“-”;+边界).append (CRLF); writer.append(“附加项:格式;name=\““+文件名+“\”;文件名=\”;“ + fileParam.get(文件名). getname () +“\““) .append (CRLF); writer.append(“内容类型:“+ URLConnection.guessContentTypeFromName(文件名).append (CRLF); writer.append (“Content-Transfer-Encoding: binary") .append (CRLF); writer.append (CRLF) .flush (); Files.copy (fileParam.get(文件名).toPath(),输出); output.flush ();//重要的继续之前的作家! writer.append (CRLF) .flush ();//CRLF很重要!它表明边界的结束。 } }//多部分/格式。 writer.append (“-”;+边界+“——“).append (CRLF) .flush (); } HttpURLConnection康涅狄格州=(HttpURLConnection)连接; 布特ByteArrayOutputStream=new ByteArrayOutputStream (); int len; byte[]新字节缓冲区=[1024]; 在((len=conn.getInputStream () .read(缓冲))!=1){ 布特。写(缓冲区,0,len); } 字符串的结果=新的字符串(bout.toByteArray (),“utf-8"); 返回结果; }java如何模拟发送格式的请求