這篇文章主要講解了java如何模擬發(fā)送form-data的請求,內(nèi)容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設計、成都網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務大柴旦,10年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18982081108
我就廢話不多說了,大家還是直接看代碼吧!
package com.silot.test;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class TestCli
{
public static void main(String args[]) throws Exception
{
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, "------------------------------0ea3fcae38ff", Charset.defaultCharset());
multipartEntity.addPart("skey", new StringBody("哈哈哈哈哈", Charset.forName("UTF-8")));
multipartEntity.addPart("operator", new StringBody("啦啦啦啦", Charset.forName("UTF-8")));
multipartEntity.addPart("VrfKey", new StringBody("渣渣渣", Charset.forName("UTF-8")));
multipartEntity.addPart("StatCode", new StringBody("00", Charset.forName("UTF-8")));
multipartEntity.addPart("mass_id", new StringBody("1234", Charset.forName("UTF-8")));
multipartEntity.addPart("reference_id", new StringBody("21231544", Charset.forName("UTF-8")));
HttpPost request = new HttpPost("http://xiefei.s1.natapp.cc/v1/withdrawCallback");
request.setEntity(multipartEntity);
request.addHeader("Content-Type", "Content-Disposition: form-data; boundary=------------------------------0ea3fcae38ff");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
InputStream is = response.getEntity().getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null)
{
buffer.append(line);
}
System.out.println("發(fā)送消息收到的返回:" + buffer.toString());
}
}補充知識:java模擬復雜表單post請求
java模擬復雜表單post請求
能支持文件上傳
/**
* 支持復雜表單,比如文件上傳
* @param formParam
* @return
* @throws Exception
*/
public static String postWithForm(FormParam formParam) throws Exception {
String url = formParam.getUrl();
String charset = "UTF-8";
String boundary = Long.toHexString(System.currentTimeMillis()); // Just generate some unique random value.
String CRLF = "\r\n"; // Line separator required by multipart/form-data.
URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
try (
OutputStream output = connection.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true);
) {
// make body param
Map<String, String> bodyParam = formParam.getBodyParam();
if (null != bodyParam) {
for (String p : bodyParam.keySet()) {
writer.append("--" + boundary).append(CRLF);
writer.append("Content-Disposition: form-data; name=\"" + p + "\"").append(CRLF);
writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF);
writer.append(CRLF).append(bodyParam.get(p)).append(CRLF).flush();
}
}
// Send file.
Map<String, File> fileParam = formParam.getFileParam();
if (null != fileParam) {
for (String fileName : fileParam.keySet()) {
writer.append("--" + boundary).append(CRLF);
writer.append("Content-Disposition: form-data; name=\"" + fileName + "\"; filename=\""
+ fileParam.get(fileName).getName() + "\"").append(CRLF);
writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(fileName)).append(CRLF);
writer.append("Content-Transfer-Encoding: binary").append(CRLF);
writer.append(CRLF).flush();
Files.copy(fileParam.get(fileName).toPath(), output);
output.flush(); // Important before continuing with writer!
writer.append(CRLF).flush(); // CRLF is important! It indicates end of boundary.
}
}
// End of multipart/form-data.
writer.append("--" + boundary + "--").append(CRLF).flush();
}
HttpURLConnection conn = (HttpURLConnection) connection;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
int len;
byte[] buffer = new byte[1024];
while ((len = conn.getInputStream().read(buffer)) != -1) {
bout.write(buffer, 0, len);
}
String result = new String(bout.toByteArray(), "utf-8");
return result;
}FormParam封裝類:
package net.riking.core.utils;
import java.io.File;
import java.util.Map;
public class FormParam {
private String url;
// private String auth;
// /**
// * http請求頭里的參數(shù)
// */
// private Map<String, String> headerParam;
/**
* 常規(guī)參數(shù)
*/
private Map<String, String> bodyParam;
/**
* 待上傳的文件參數(shù) filename和file
*/
private Map<String, File> fileParam;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
// public String getAuth() {
// return auth;
// }
//
// public void setAuth(String auth) {
// this.auth = auth;
// }
//
// public Map<String, String> getHeaderParam() {
// return headerParam;
// }
//
// public void setHeaderParam(Map<String, String> headerParam) {
// this.headerParam = headerParam;
// }
public Map<String, String> getBodyParam() {
return bodyParam;
}
public void setBodyParam(Map<String, String> bodyParam) {
this.bodyParam = bodyParam;
}
public Map<String, File> getFileParam() {
return fileParam;
}
public void setFileParam(Map<String, File> fileParam) {
this.fileParam = fileParam;
}
}看完上述內(nèi)容,是不是對java如何模擬發(fā)送form-data的請求有進一步的了解,如果還想學習更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁題目:java如何模擬發(fā)送form-data的請求
路徑分享:http://chinadenli.net/article12/gsgcgc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站維護、微信小程序、標簽優(yōu)化、用戶體驗、移動網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)