public static void dowloadFile(String url, String pathAndFile){ // 创建默认的httpClient实例. CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httpGet HttpGet httpGet = new HttpGet(url); try { // 设置请求头参数 httpGet.setHeader("xxxx-Key", "xxxxxx"); CloseableHttpResponse httpResponse = httpclient.execute(httpGet); HttpEntity entity = httpResponse.getEntity(); InputStream inputStream = entity.getContent(); //获取输入流 ByteArrayOutputStream bos = new ByteArrayOutputStream(); BufferedInputStream br = new BufferedInputStream(inputStream); byte[] b = new byte[1024]; for (int c = 0; (c = br.read(b)) != -1;) { bos.write(b, 0, c); } b = null; br.close(); FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream(pathAndFile); fileOutputStream.write(bos.toByteArray()); } catch (IOException e) { e.printStackTrace(); } finally { if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); log.error("关闭 fileOutputStream 流异常"); } } } } catch (Exception e) { } finally { try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } }
时间: 2024-02-10 07:32:37 浏览: 78
这段代码是用于从指定的URL下载文件并保存到本地指定路径的方法。该方法使用的是Apache HttpClient库来发送HTTP请求和接收响应。在方法中,首先创建了一个默认的HttpClient实例,然后创建了一个HttpGet对象并设置了请求头参数。接着执行请求并获取响应实体,从中获取输入流并使用缓冲读取器和字节数组输出流来读取并存储响应数据。最后将字节数组写入文件输出流并关闭流。需要注意的是,该方法没有处理异常,因此在实际使用时需要进行适当的异常处理。
相关问题
function qrqm(){ //获取base64 var stream = obj.HWGetBase64Stream(2); if(stream.length > 0){ //保存此人签名 $.post('/sdcsm/qianzi/savesign.action',{ dGrdabh:"371426110010004802", tablename:"T_JK_JKTJ", signcolumn:"jgfk_brqz", tablecreatetime:"2023-07-20 17:25:28", loadurl:"null", pic:stream },function(data){ if(data == '0'){ alert("签名保存成功"); if('null' != 'null' && 'null' != ''){ window.location.href='null'; }else{ var api=frameElement.api; var W=api.opener; W.closedialog2(); } }else{ alert("签名保存失败"); } }); }else{ //如果属于修改,并且没有再次签名,刷新页面 if('0' == '1' && nullbc){ //alert('null'); if('null' != 'null' && 'null' != ''){ window.location.href='null'; }else{ var api=frameElement.api; var W=api.opener; W.closedialog2(); } }else{ alert("请签名后再保存"); } } } 使用Java DefaultHttpClient封装
你可以使用 Java 的 `DefaultHttpClient` 类来封装这段 JavaScript 代码。下面是一个使用 `DefaultHttpClient` 实现相同功能的示例代码:
```java
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 创建 HttpClient 实例
HttpClient httpClient = new DefaultHttpClient();
// 创建 HttpPost 请求
HttpPost httpPost = new HttpPost("http://example.com/sdcsm/qianzi/savesign.action");
try {
// 设置请求参数
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("dGrdabh", "371426110010004802"));
params.add(new BasicNameValuePair("tablename", "T_JK_JKTJ"));
params.add(new BasicNameValuePair("signcolumn", "jgfk_brqz"));
params.add(new BasicNameValuePair("tablecreatetime", "2023-07-20 17:25:28"));
params.add(new BasicNameValuePair("loadurl", "null"));
params.add(new BasicNameValuePair("pic", obj.HWGetBase64Stream(2)));
httpPost.setEntity(new UrlEncodedFormEntity(params));
// 发送请求并获取响应
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
// 读取响应数据
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuilder responseText = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
responseText.append(line);
}
// 处理响应数据
if (responseText.toString().equals("0")) {
System.out.println("签名保存成功");
if ("null".equals("null") && "null".equals("")) {
// window.location.href='null';
} else {
// var api=frameElement.api;
// var W=api.opener;
// W.closedialog2();
}
} else {
System.out.println("签名保存失败");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭 HttpClient
httpClient.getConnectionManager().shutdown();
}
}
}
```
在上面的示例中,我们使用 `DefaultHttpClient` 类来发送 HTTP POST 请求,并使用 `HttpPost` 类设置请求参数。我们将参数封装在 `List<NameValuePair>` 中,并使用 `UrlEncodedFormEntity` 类将参数编码为表单数据。然后,我们执行请求并获取响应。通过读取响应数据,你可以根据需要进行进一步的处理。
请注意,`DefaultHttpClient` 类已被标记为过时,推荐使用更现代的 `HttpClient` 实现。你可以使用 Apache HttpClient 5.x 版本或 Java 原生的 `java.net.http.HttpClient` 类进行 HTTP 请求。这些类提供了更强大和灵活的功能,可以满足更多的需求。
希望对你有所帮助!
HttpClients.createDefault是什么
根据提供的引用[1],HttpClients.createDefault是Apache HttpClient库中的一个静态方法,用于创建一个默认的HttpClient实例。HttpClient是一个HTTP客户端库,用于与HTTP服务器进行通信。使用HttpClient,可以发送HTTP请求并接收HTTP响应。createDefault方法返回一个HttpClient实例,该实例已经配置好了一些默认的参数,例如连接超时时间和套接字超时时间等。以下是一个使用HttpClients.createDefault创建HttpClient实例的示例代码:
```java
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.HttpClient;
public class Example {
public static void main(String[] args) {
HttpClient httpClient = HttpClients.createDefault();
// 使用httpClient发送HTTP请求并处理响应
// ...
}
}
```
阅读全文