java向指定URL发送请求_HttpSenderUtil向指定 URL 发送POST方法的请求

packagecom.founder.ec.common.utils;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.URL;importjava.net.URLConnection;importjava.util.Date;importjava.util.Map;importjava.util.Set;importorg.apache.commons.httpclient.HttpClient;importorg.apache.commons.httpclient.HttpException;importorg.apache.commons.httpclient.NameValuePair;importorg.apache.commons.httpclient.URIException;importorg.apache.commons.httpclient.methods.PostMethod;importorg.apache.commons.httpclient.methods.GetMethod;importorg.apache.commons.httpclient.HttpMethod;importorg.apache.commons.httpclient.HttpStatus;importorg.apache.commons.httpclient.util.URIUtil;importorg.apache.commons.lang.StringUtils;importorg.apache.commons.httpclient.HttpException;public classHttpSenderUtil {/*** 向指定 URL 发送POST方法的请求

*

*@paramurl

* 发送请求的 URL

*@paramparam

* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

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

public staticString sendPost(String url, String param) {

PrintWriter out= null;

BufferedReader in= null;

String result= "";try{

URL realUrl= newURL(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 = newPrintWriter(conn.getOutputStream());//发送请求参数

out.print(param);//flush输出流的缓冲

out.flush();//定义BufferedReader输入流来读取URL的响应

in = newBufferedReader(newInputStreamReader(conn.getInputStream()));

String line;while ((line = in.readLine()) != null) {

result+=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();

}

}returnresult;

}public static String httpSend(String url, Map propsMap) throwsException{

HttpClient httpClient= newHttpClient();

PostMethod postMethod= new PostMethod(url);//POST请求

String returnString ="";//参数设置

Set keySet =propsMap.keySet();

NameValuePair[] postData= newNameValuePair[keySet.size()];int index = 0;for(String key : keySet) {

postData[index++] = newNameValuePair(key, propsMap.get(key).toString());

}

postMethod.addParameters(postData);try{

httpClient.executeMethod(postMethod);//发送请求

java.io.InputStream input =postMethod.getResponseBodyAsStream();

returnString=convertStreamToString(input).toString();

}catch(HttpException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{

postMethod.releaseConnection();//关闭连接

}returnreturnString;

}public staticString convertStreamToString(java.io.InputStream input)throwsException {

BufferedReader reader= new BufferedReader(newInputStreamReader(input,"UTF-8"));

StringBuilder sb= newStringBuilder();

String line= null;while ((line = reader.readLine()) != null) {

sb.append(line+ "\n");

}

input.close();returnsb.toString();

}public static voidmain(String[] strs){long time=newDate().getTime();

String check=MD5.getMD5(time+"www.j1.com");

String mobile="13053702096";

String msg="尊敬的用户 , 您在健一网的安全验证码为897489,健一网祝您身体健康";

String param="t="+time+"&mobile="+mobile+"&msg="+msg+"&check="+check;

String res=HttpSenderUtil.sendPost("http://localhost:8080/ec-dec/page/sms/sendSms/code",param);

System.out.println(res);

}/*** 执行get方法

*@paramurl

*@paramqueryString

*@return

*/

public staticString doGet(String url, String queryString) {

String response= null;

HttpClient client= newHttpClient();

HttpMethod method= newGetMethod(url);try{if(StringUtils.isNotBlank(queryString))

method.setQueryString(URIUtil.encodeQuery(queryString));

client.executeMethod(method);if (method.getStatusCode() ==HttpStatus.SC_OK) {

response=method.getResponseBodyAsString();

}

}catch(URIException e) {//logger.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);

} catch(IOException e) {//logger.error("执行HTTP Get请求" + url + "时,发生异常!", e);

} finally{

method.releaseConnection();

}returnresponse;

}

}

你可以使用Java中的HttpURLConnection类来发送HTTP请求。以下是一个示例代码,该代码将文件作为参数发送指定URL: ```java import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpFileUploader { public static void main(String[] args) { String url = "http://example.com/upload"; String filePath = "/path/to/file"; try { File file = new File(filePath); URL urlObj = new URL(url); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); // Set connection parameters conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=boundary"); DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); // Write file data to the output stream FileInputStream fileInputStream = new FileInputStream(file); byte[] buffer = new byte[1024]; int bytesRead = -1; while ((bytesRead = fileInputStream.read(buffer)) != -1) { outStream.write(buffer, 0, bytesRead); } fileInputStream.close(); // End the multipart/form-data request outStream.writeBytes("--boundary--\r\n"); outStream.flush(); outStream.close(); // Read the server response BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在这个例子中,我们首先创建一个File对象,然后打开一个HttpURLConnection连接到指定URL。我们设置连接参数,包括将请求方法设置为POST,并且设置Content-Type头为multipart/form-data。 我们创建一个DataOutputStream对象来将文件数据写入输出流中。我们使用一个while循环来读取文件并将其写入输出流。我们在写入文件数据之后写入一个结束边界(--boundary--)来告诉服务器请求已经结束。 最后,我们读取服务器的响应并将其显示在控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值