package com.ckn.web.main;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLConnection;
import javax.net.ssl.HttpsURLConnection;
public class Test2 {
public static final String JSON_ENCODE="UTF-8";
public static String post(String url,String json) {
String respText=null;
try{
//1、重新对请求报文进行 UTF-8 编码
byte[] postData=null;
postData=json.getBytes(JSON_ENCODE);
//2、发送 HTTP/HTTPS 请求
OutputStream reqStream=null;
InputStream resStream=null;
URLConnection urlCon=null;
// A、与服务器建立 HTTP/HTTPS 连接
urlCon=Test2.createRequest(url, "POST");
// B、指定报文头 [Content-type]、[Content-length]、[Keep-alive]
urlCon.setRequestProperty("Content-type", "application/json;charset="+JSON_ENCODE);
urlCon.setRequestProperty("Content-length", String.valueOf(postData.length));
urlCon.setRequestProperty("Keep-alive", "false");
// C、获取与服务器的输出流、然后向服务器写数据
reqStream=urlCon.getOutputStream();
reqStream.write(postData);
reqStream.flush();
reqStream.close();
// D、接收服务器返回结果
ByteArrayOutputStream ms=null;
resStream=urlCon.getInputStream();
ms=new ByteArrayOutputStream();
byte[] buf=new byte[4096];
int count;
while((count=resStream.read(buf, 0, buf.length))>0){
ms.write(buf, 0, count);
}
resStream.close();
respText=new String(ms.toByteArray(),JSON_ENCODE);
}catch(Exception e2){
e2.printStackTrace();
}
return respText;
}
protected static URLConnection createRequest(String urlStr, String strMethod) throws Exception{
//根据 URL 获取一个到主机连接
URLConnection conn= Test2.getRequestByUrl(urlStr);
//判断该连接是否 HTTP 连接
if(conn instanceof HttpsURLConnection || !(conn instanceof HttpURLConnection)){
throw new RuntimeException("URL 无法建立 HTTP 连接:"+urlStr);
}
//设置HTTP相关配置:提交方式
HttpURLConnection httpConn=(HttpURLConnection) conn;
httpConn.setRequestMethod(strMethod);
return conn;
}
/**
* 获取URLConnection
* @param urlStr
* @return
* @throws MalformedURLException
*/
public static URLConnection getRequestByUrl(String urlStr) throws Exception{
URL url=null;
URLConnection conn=null;
url=new URL(urlStr);
conn=url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
return conn;
}
public static void main(String[] args){
String url="http://127.0.0.1:8088/app-zht/ex/api.do?reqType=effecDateAndEndDate";
String json="[\"SHZVJ6SMHZ9U5TCLL\",\"SHZVJ6SMHZ9U5TCLL\",\"S0000000000000003\"]";
String r=post(url,json);
System.out.println(r);
}
}
- 浏览: 54059 次
- 性别:
- 来自: 北京
相关推荐
- `sendGet(String urlString, Map, String> params)`:带有查询参数的GET请求,参数以键值对的形式拼接到URL。 - `sendGet(String urlString, Map, String> params, Map, String> propertys)`:除了查询参数外,还...
7. **处理响应**:通过`BufferedReader`读取响应流,并将其转换为字符串形式的响应内容,以便进一步处理或展示。 #### 三、代码优化与注意事项 1. **异常处理**:代码示例中没有完整展示异常处理逻辑,实际应用中...
当客户端通过HTTP上传文件时,数据通常以POST请求的形式发送。服务器端需要解析这个请求,提取出文件数据,并将其保存到本地磁盘。以下是一个基本的步骤分解: 1. **创建HTTP监听器**:使用`HttpListener`类创建一...
4. **发送请求**:通过`GetRequestStream`方法获取请求流,并将数据写入流中。 5. **接收响应**:发送完数据后,调用`GetResponse`方法获取响应对象,并读取返回的内容。 #### 示例代码分析 下面是一个具体的示例...
- 发送请求,包括打开输出流,写入数据,关闭流等。 - 处理服务器响应,这可能涉及解析响应体(如JSON或XML),并将其转化为相应的Java对象。 - 错误处理,包括网络异常、服务器返回错误码等。 在实际开发中,你还...
- 对于POST请求,参数通常以键值对形式组织成字符串,然后写入到输出流中。 4. **使用HttpURLConnection** - Java内置的`HttpURLConnection`是处理HTTP请求的标准API,提供了设置请求方法、添加请求头、处理响应...
"Post提交,图片以文件流形式上传并保存到数据库"这一技术主题涉及到的是HTTP的POST请求方式、文件流处理以及数据库存储。以下是对这个主题的详细解释: 1. **POST请求**: POST请求是HTTP协议中的一个方法,用于...
标题中的"Python-One一个信息拉取定时以邮件形式发送"是指使用Python编程语言来实现一个自动的信息订阅服务。这个服务可以定期从特定的网络资源(可能是网页、API接口或者其他数据源)获取信息,并通过电子邮件的...
描述中的“发送请求练习运行结果”可能指的是通过`requests`库获取某些资源后的输出。文件名列表中的`.mp3`文件可能是从某个网站下载的音频资源。使用`requests`库下载文件,可以利用`requests.get()`的`stream=True...
- 发送请求并获取响应,可以使用`execute()`同步方法或`enqueue()`异步方法。对于JSON响应,可以使用`Gson`或`Jackson`等库进行解析。 无论使用哪种方式,解析JSON字符串都是关键步骤。Android SDK提供了`org.json...
总结一下,JS构造HTML文本内容成文件流形式发送到后台的步骤包括: 1. 创建HTML字符串。 2. 将HTML字符串转换为Blob对象。 3. 创建FormData对象并添加Blob。 4. 使用axios或fetch发送POST请求,附带FormData,并指定...
另一种方式是直接使用FormData对象,它可以携带二进制数据,并且在HTTP请求中以多部分/表单数据形式发送。 4. **API接口设计**: 设计支持二进制数据的API接口时,需要考虑以下几点: - 接口文档应明确说明支持的...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
Java 模拟发送 Form-Data 的请求方式 Java 模拟发送 Form-Data 的请求方式是指在 Java 语言中模拟浏览器发送 Form-Data 格式的 HTTP 请求的方法。Form-Data 是一种常见的 HTTP 请求体格式,广泛应用于文件上传、...
在IT领域,尤其是在Web开发中,将图片以二进制流的形式存储在数据库中是一种常见的做法,这在处理大量图像数据或需要高效访问时尤其有用。本示例以Visual Studio 2005 (VS2005) 和 SQL Server 2005 (SQL2005) 为开发...
当Android客户端发送请求到服务器后,服务器接收到请求,解析请求头和请求体,然后执行相应的业务逻辑,最后将结果以HTTP响应的形式返回给客户端。 JSP文件是一种动态网页技术,可以结合HTML、Java代码和内置的JSP...
在Next.js框架中实现OpenAI的文本补全功能并以流的形式输出,涉及到的技术栈包括JavaScript、Node.js、Next.js框架、以及OpenAI的API接口。这个项目的主要目的是利用OpenAI的强大自然语言处理能力,在前端展示时模拟...
RestSharp是一个强大的、轻量级的C# HTTP客户端库,它提供了简单易用的API来发送RESTful请求并处理响应。通过使用RestSharp,开发者可以方便地执行GET、POST、PUT、DELETE等HTTP方法,并处理JSON、XML或者其他形式的...
使用流的形式发送 GET 请求需要创建一个 URL 对象,并使用 openStream() 方法获取输入流,然后使用 BufferedReader 读取响应数据。 代码实现: ```java public String sendGetRequest(String getUrl) { ...