封装HTTP POST信息的发送方法并返回JSON数据

该博客介绍了一个用于封装HTTP POST请求的Java方法,能够发送参数并接收JSON数据。作者提供了详细的代码实现,包括设置请求头、处理编码、发送数据到服务器以及从输入流中读取响应内容。此外,还包含了一个获取网络图片资源的辅助方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 封装HTTP POST信息的发送方法并返回JSON数据
 * @author acer
 *
 */
public class HttpPostUtil
{
private static String[] sessionId = null;


// 请求服务器端的URL
public static String PATH = "http://192.168.253.3/Order/Main/";
public static String IMAGE_PATH = PATH + "Image.php";


/**
* @param params
*            填写的URL的参数
* @param encode
*            字节编码

* @return
*/
public static String sendPostMesssage(Map<String, String> params,
String encode, String url_path)
{
URL url;
//作为StringBuffer初始化的字符串
StringBuffer buffer = new StringBuffer();
try
{
url = new URL(url_path);
if(params != null && !params.isEmpty())
{
for(Map.Entry<String, String> entry: params.entrySet())
{
//完成转码操作
buffer.append(entry.getKey())
.append("=")
.append(URLEncoder.encode(entry.getValue(), encode))
.append("&");
}
//删除最右一个&
buffer.deleteCharAt(buffer.length() - 1);
}
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(3000);
urlConnection.setRequestMethod("POST");
//表示从服务器获取数据
urlConnection.setDoInput(true);
//表示向服务器写数据
urlConnection.setDoOutput(true);
if(sessionId[0] != null)
{
urlConnection.setRequestProperty("cookie", sessionId[0]);
}
//获得上传信息的字节大小及长度
byte[] mydata = buffer.toString().getBytes();
//表示设置请求体的类型是文本类型
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencode");
urlConnection.setRequestProperty("Content-Length", String.valueOf(mydata.length));
//获得输出流,向服务器输出数据
OutputStream outputStream = urlConnection.getOutputStream();
outputStream.write(mydata, 0, mydata.length);
outputStream.close();
//获得服务器响应的结果和状态码
int responseCode = urlConnection.getResponseCode();
if(responseCode == 200)
{
return changeInputStream(urlConnection.getInputStream(), encode);
}
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch (ProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}

return "";
}

/**
* 将一个输入流转换成指定编码的字符串

* @param inputStream
* @param encode
* @return
*/
private static String changeInputStream(InputStream inputStream, String encode)
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] data = new byte[1024];
int len = 0;
String result = "";
if(inputStream != null)
{
try
{
while((len = inputStream.read(data)) != -1)
{
outputStream.write(data, 0, len);
}
result = new String(outputStream.toByteArray(), encode);
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
return result;
}

/**
* 获取网络图片资源
* @param url
* @return Bitmap
*/
public static Bitmap getHttpBitmap(String url)
{
URL myFileURL;
Bitmap bitmap = null;
try
{
myFileURL = new URL(url);
//获得连接
HttpURLConnection conn = (HttpURLConnection) myFileURL.openConnection();
//设置超时时间为6000毫秒,conn.setConnectionTimeout(0);表示没有时间限制
conn.setConnectTimeout(6000);
//连接设置获得数据流
conn.setDoInput(true);
//记住session
String session_value = conn.getHeaderField("Set-Cookie");
sessionId = session_value.split(";");
conn.connect();
//得到数据流
InputStream is = conn.getInputStream();
//解析得到图片
bitmap = BitmapFactory.decodeStream(is);
//关闭数据流
is.close();
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
// TODO 自动生成的 catch 块
}
return bitmap;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值