HttpUrlConnection发送url请求(后台springmvc)
1.HttpURLConnection发送url请求
public class JavaRequest {
private static final String BASE_URL = "http://localhost:8080/dsdemo/";
public static String userToken = null;
public static String problemName = null;
public static String sendPost(String sufUrl, JSONObject params) {
DataOutputStream out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(BASE_URL+sufUrl);
// 打开和URL之间的连接
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("POST"); // 设置请求方式
connection.setRequestProperty("Connection", "Keep-Alive");
connection.connect();
out = new DataOutputStream (connection.getOutputStream());
// 发送请求参数,防止中文乱码
out.write(jsonToUrlParams(params).getBytes("UTF-8"));
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!");
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
System.out.println(result);
return result;
}
private static String jsonToUrlParams(JSONObject params){
StringBuilder sb = new StringBuilder();
sb.append("userToken=").append(userToken);
for(Iterator<?> it = params.keys(); it.hasNext(); ){
String key = (String) it.next();
sb.append("&").append(key).append("=").append(params.get(key));
}
return sb.toString();
}
}
遗留问题:
a.按照网上说的发送 json格式的字符串,但是后台无法接收到。所以这里将jsonObject转化成 url 参数的形式。
b.jquery发送json格式的数据是可以接收到的。
<script type="text/javascript">
var sendData = {
username: "hjz",
password: "123"
};
(function (){
$.ajax({
type:'post',
url:'http://localhost:8080/dsdemo/userRegister',
data: sendData,
dataType:'json',
success:function(data){
alert(JSON.stringify(data));
} ,
error: function(data){
alert(JSON.stringify(data));
}
});
})();
</script>
另外可能会出现中文乱码的问题:
a. 首先发送数据利用DataOutputStream out.write(jsonToUrlParams(params).getBytes("UTF-8"));
b. 接收后台 response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
HttpUrlConnection发送url请求(后台springmvc)的更多相关文章
- HttpURLConnection发送POST请求(可包含文件)
import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io. ...
- HttpURLConnection 发送http请求帮助类
java 利用HttpURLConnection 发送http请求 提供GET / POST /上传文件/下载文件 功能 import java.io.*; import java.net.*; im ...
- axios发送post请求后台接受不到问题
axios发送post请求后台接受不到问题 1.首先这是前端的问题 2.解决方案不唯一,但这招肯定行 <!DOCTYPE html> <html> <head> & ...
- 利用HttpURLConnection发送post请求上传多个文件
本文要用java.net.HttpURLConnection来实现多个文件上传 1. 研究 form 表单到底封装了什么样的信息发送到servlet. 假如我参数写的内容是hello word,然后二 ...
- 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)
Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...
- Java利用原始HttpURLConnection发送http请求数据小结
1,在post请求下,写输出应该在读取之后,否则会抛出异常. 即操作OutputStream对象应该在InputStreamReader之前. 2.conn.getResponseCode()获取返回 ...
- easyUI datagrid 重复发送URL请求
如果在table属性中配置了URL参数,在初始化datagrid时,会发送一次url请求.或者在js中datagrid{url:''}时,也会自动发送一次url请求. 在初始化datagrid时,我并 ...
- Java HttpURLConnection发送post请求示例
public static Map<String, Object> invokeCapp(String urlStr, Map<String, Object> params) ...
- HttpURLConnection 发送PUT请求 json请求体 与服务端接收
发送请求: public void testHttp() { String result = ""; try { URL postURL = new URL("http: ...
随机推荐
- AMD与CMD(转载)
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题 ...
- cocoapods安装及使用
最近新换了电脑,重新安装cocoapods遇到了很多问题,在这里把问题还有解决方案记录一下 一.安装Cocoapods 在安装CocoaPods之前,首先要在本地安装好Ruby环境,一般Mac下都自带 ...
- 《HTTP权威指南》大块儿头
看到这样的一本书,胡乱翻开看看里面的内容,我觉得我又浮躁了.真厚啊!能学多少就学多少吧. 看看提要,这本书主要想讲的是HTTP和相关Web技术的.关于这方面的内容,知道的不多.
- jquery/zepto 圣诞节雪花飞扬
下载地址: http://www.html5tricks.com/jquery-html5-christ-snow.html 演示地址: http://www.html5tricks.com/jque ...
- asp.net 生成图形验证码(字母和数字混合)
验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站.下面是效果图: 具体实现方法如下: 1.主要思路是:引用Using System.Drawing命名空 ...
- sql 代码调试
begin --开启事务 begin tran --插入 INSERT INTO [DICTIONARY] (TablName,Column_Id,Column_Name) --数据源 select ...
- TaintDroid剖析之File & Memiry & Socket级污点传播
TaintDroid剖析之File & Memiry & Socket级污点传播 作者:简行.走位@阿里聚安全 1.涉及到的代码文件 TaintDroid在File, Memory以及 ...
- Hadoop学习笔记—15.HBase框架学习(基础知识篇)
HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列的存储模型,它存储的是 ...
- AutoMapper使用手册(一)
阅读目录 1. 介绍 2. 基本使用 3. 自动分割映射(Flattening) 4. 自定义字段映射(Projection) 5. 验证配置(Configuration validation) 介绍 ...
- .NET中STAThread和MTAThread
本文讨论在.NET中使用进程内COM组件时的公寓模型,以一个示例直观演示STAThread和MTAThread的作用和区别. 1. COM中的公寓 1.1 基本规则 公寓是COM组件的运行环境,日常生 ...