httpClient发送post请求到springmvc,接收请求后,无法再内部跳转

qq_36955858 2017-04-13 10:07:09
因项目需要,发送http请求方式为post,json数据放在body里。但现在问题是http请求在springmvc里controller已经能接收到,json数据也可以解析出来。但是我需要接收完请求后,根据不同的品牌进行不同的controller处理,所以是需要接收完请求后就要跳转到,例如:redirect:./picc/ppartinfo.do 。现在我做了一个测试,当我是用一个jsp的form表单发送的post请求,到了接收请求的controller,是可以再去内部跳转,例如:redirect:./picc/ppartinfo.do ;但是我是使用http发送的post请求,也可以到接收请求的controller,但到了跳转redirect:./picc/ppartinfo.do 就没有反应了,也没有报错。想问一下这个是什么问题?

1、post方式发送的http请求测试类。
//对接口进行测试
public class TestMain {
private String url = "http://localhost:8080/ComplexDemander/piccpart.do";
private String charset = "utf-8";
private HttpClientUtil httpClientUtil = null;

public TestMain(){
httpClientUtil = new HttpClientUtil();
}

public void test(){
String httpOrgCreateTest = url;
Map<String,String> createMap = new HashMap<String,String>();
Map<String,String> createMap3 = new HashMap<String,String>();
List<Map> l=new ArrayList<Map>();
createMap.put("TransactionCode","01");
createMap.put("Filter","NO");
createMap.put("VinCode","X4XKS494500H03020");
createMap3.put("PartName","前保");
l.add(createMap3);
createMap3.put("PartName","前保险杠骨架");
l.add(createMap3);
createMap3.put("PartName","前保险杠支架(左)");
l.add(createMap3);
createMap.put("PartsList", l.toString());
String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);
System.out.println("result:"+httpOrgCreateTestRtn);
}

public static void main(String[] args){
TestMain main = new TestMain();
main.test();
}
}


2、接收请求的controller
@Controller
@RequestMapping("/")
public class PFocusController {
/**
* 获取vin与json数据包,根据vin与配件条件查询出数据
*/
@RequestMapping(value="piccpart.do",method=RequestMethod.POST,produces={"application/json;charset=UTF-8"})
public String getPartByName(HttpServletRequest request, HttpServletResponse response)
{
try {
BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream(),Charset.forName("UTF-8")));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = in.readLine()) != null) {
sb.append(line);
}
String jstr=sb.toString();
//中文解码
jstr = URLDecoder.decode(URLDecoder.decode(jstr,"utf-8"),"utf-8");
request.getSession().setAttribute("jstr", jstr);
// String jstr=tes.getJSon(); //获取的文本json数据 内部测试
// request.getSession().setAttribute("jstr", jstr.toString());
// return new ModelAndView("redirect:/toList");
return "redirect:./picc/ppartinfo.do";
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

}


3、需要内部跳转的controller的部分代码
@RequestMapping(value="ppartinfo.do",produces={"application/json;charset=UTF-8"})
@ResponseBody
public String getPPart(String vin,HttpServletRequest request,HttpServletResponse response)
{
System.out.println("进入处理Controller");
return "";
}

请各位大哥帮忙看看,解决一下。好急!

...全文
1040 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2017-12-25
  • 打赏
  • 举报
回复
httpclient并不会替你做重定向操作,你得自己写拿到status code,如果是30X,自行重定向server响应的新地址 springmvc的测试用例还是不要用这种方式的好,可以考虑MockMvc
琦彦 2017-12-25
  • 打赏
  • 举报
回复
或者使用转发
琦彦 2017-12-22
  • 打赏
  • 举报
回复
原因:也就是HTTP1.1在介绍302时说,如果客户端发出非GET、HEAD请求后,收到服务端的302状态码,那么就不能自动的向新URI发送重复请求,除非得到用户的确认。 解决:直接调用方法
lmkght 2017-04-13
  • 打赏
  • 举报
回复
断点一下 看看是不是按正常顺序走的
qq_36955858 2017-04-13
  • 打赏
  • 举报
回复
引用 3 楼 lmkght 的回复:
直接就写/picc/ppartinfo.do
刚试了这样写/picc/ppartinfo.do也是跳转不了,有没有可能是因为代码里发送的请求,无法跳转?
lmkght 2017-04-13
  • 打赏
  • 举报
回复
直接就写/picc/ppartinfo.do
qq_36955858 2017-04-13
  • 打赏
  • 举报
回复
引用 1 楼 lmkght 的回复:
./picc/ppartinfo.do ./ 是个什么东西? 你在地址栏手动打地址的时候也带./?
这个是因为我接收请求的controller @Controller @RequestMapping("/") ,而我需要跳转的controller是 @Controller @RequestMapping("/picc") 所以找同级下写法就是 ./picc/ppartinfo.do
lmkght 2017-04-13
  • 打赏
  • 举报
回复
./picc/ppartinfo.do ./ 是个什么东西? 你在地址栏手动打地址的时候也带./?
hersing 2017-04-13
  • 打赏
  • 举报
回复
先试试直接用工具(如:postman)访问你需要跳转的这个controller,也就是你说的/picc/ppartinfo.do这个controller,如果可以进,那就是上面一个controller里面的问题,先定位错误吧 还有就是getPPart()这个方法感觉好别扭,你在方法体上已经定义了@ResponseBody了,为何还要在@RequestMapping 中定义produces属性呢,据我了解这两个代表的意思是一样的吧
qq_36955858 2017-04-13
  • 打赏
  • 举报
回复
因为比较急,最好没做跳转了,直接在接收请求的controller就做处理了。有解决办法的朋友可以麻烦留言,我学习一下。
  • 打赏
  • 举报
回复
取到值后要再调用一次http请求。
shop >前言:基于ssm分布式开发实现的电商项目(聚合工程) 注:本项目为开源项目,不能用于商业应用,仅供学习。 ### 使用工具: maven(构建项目),svn(版本控制工具),myeclipse(集成开发环境),nginx(反向代理), FastDFS (图片服务器),tomcat(web服务器),zookeeper(集群管理),mysql(数据库) Junit(测试) ### 技术栈: spring,springmvc,mybatis(框架) solr(搜索服务),redis(缓存),easyUI(后台系统页面) ### 数据库设计 tb_user用户表(id,username,password,phone,email,created,updated) tb_item商品表(id,title,sell_point,price,num,barcode,image,cid,status,created,updated) tb_cat商品分类表(id,parent_id,name,status,sort_order,is_parent,created,updated) tb_item_desc商品描述表(item_id,item_desc,created,updated) tb_item_param商品规格参数表(id,item_cat_id,param_data,created,updated) tb_item_param商品规格参数模板表(id,item_id,param_data,created,updated) tb_order订单表(payment,payment_type,post_fee,status,create_time,update_time,payment_time,consign_time,end_time,close_time,shipping_name,shipping_code,user_id,buyer_message,buyer_nick,buyer_rate) tb_order订单商品表(id,item_id,order_id,num,title,price,total_fee,pic_path) tb_order_shipping订单物流表(order_id,receiver_name,receiver_phone,receiver_mobile,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip,created,updated) tb_content_category商品目录分类表(id,parent_id,name,status,sort_order,is_parent,created,updated) tb_content商品目录表(id,category_id,title,sub_title,title_desc,url,pic,pic2,content,created,updated) ## 分布式系统 ### 商品后台管理系统 ### shop-manager(管理后台) 商品的添加功能: 1.商品类目选择-easyui异步tree控件的使用 2.图片上传(fastdfs+nginx) 3.富文本编辑器使用KindEditor 4.分页使用PageHelper插件,插件是基于mybatis的拦截器接口实现的 商品的展示功能: 1.分页插件的使用PageHelper。 2.easyUIDataGrid的使用 ### 前台系统 ### shop-rest(发布服务) ### shop-search(搜索服务) * 使用solr实现搜索,内容列表使用redis缓存,使用zookeeper管理集群 ### shop-sso (单点登录系统) SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中, 用户只需要登录一次就可以访问所有相互信任的应用系统。它包括 可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 它是目前比较流行的企业业务整合的解决方案之一。 用户登录: 1、接收用户名和密码 2、校验用户名密码 3、生成token,可以使用UUID 4、把用户信息写入redis,key就是token 5、把token写入cookie。 6、返回登录成功需要把token返回给客户端。 Session共享的问题: 1、tomcat做集群配置session复制。如果集群中节点很多,会形成网络风暴。推荐节点数量不要超过5个。 2、分布式架构。拆

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧