美文网首页
2016年09月18日工作日志

2016年09月18日工作日志

作者: 凡人法相_仙逆遮天 | 来源:发表于2016-09-18 22:55 被阅读11次

今天遇到一个很恶心的问题,从ios发过来的post请求怎么都无法识别,可是在web端发送确实很正常的。过程如下:

1.在chrome浏览器里随便打开一个网页,F12打开控制台,然后植入jquery

var fileref=document.createElement('script'); 

fileref.setAttribute("type","text/javascript"); 

fileref.setAttribute("src", 'http://libs.baidu.com/jquery/1.9.1/jquery.js'); 

document.getElementsByTagName("head")[0].appendChild(fileref); 

2.发送post请求

$.post(    
     "http://192.168.2.4/app/api/blackList/query/name",   
      {name: "王刚", currentPage: "1"},
      function (txt) {
        console.log(txt);
      }
)

返回的数据正常:


Paste_Image.png

通过打断点调试发现,

ios端发来的请求>content-type:application/json
web方式发来的请求>content-type:application/x-www-form-urlencoded; charset=UTF-8

到这里,问题就好解决了,前者是一个字符串,可以在代码里加上@RequestBody实现转换,同时,将web传递的content-type修改一下即可(不能直接使用$.post,这对于开发者而言可不够友好)

$.ajax(
  {
   type: "post",
   contentType:"application/json",
   url: "http://192.168.2.4/app/api/blackList/query/name",
   data: JSON.stringify({name:"王刚",currentPage:"1"}),
   success: function(data){
      console.log(data)
    }
 }
)

斟酌再三,决定还是保留对传统web端jquery.post()方式的支持,同时支持ios序列化传递过来的参数,第一版先进行header判断,遇到application/json的content-type,就从request取出inputstream,手动转化
controller的代码如下:

@ApiOperation(value = "姓名查询", notes = "首次访问时currentPage传1")
@ApiImplicitParams({
       @ApiImplicitParam(name = "name", value = "名称", required = true, dataType = "String"), 
       @ApiImplicitParam(name = "currentPage", value = "当前是第几页", required = true, dataType = "String")})
@PostMapping(value = "/api/blackList/query/name")
public String nameQuery(BlackListParam param, HttpServletRequest request) throws IOException {
    String contentType = request.getHeader("Content-Type");
    if (contentType.endsWith("application/x-www-form-urlencoded")) {
    } else if (contentType.endsWith("application/json")) {
        String string = HttpToolkit.getContent(request.getInputStream(), "UTF-8");
        param = mapper.readValue(string, BlackListParam.class);
    }
    logger.info("进入nameQuery,name=" + param.getName() + "&currentPage=" + param.getCurrentPage());
    int currentPageInt = Integer.parseInt(param.getCurrentPage());
    String result = blackListApiService.nameQuery(param.getName(), currentPageInt);
    return result;}

HttpToolkit里面的getContent部分的代码:

public static String getContent(InputStream is, String charset) {
    String pageString = null;
    InputStreamReader isr = null;
    BufferedReader br = null;
    StringBuffer sb = null;
    try {
        isr = new InputStreamReader(is, charset);
        br = new BufferedReader(isr);
        sb = new StringBuffer();
        String line = null;
        while ((line = br.readLine()) != null) {
            sb.append(line + "\n");
        }
        pageString = sb.toString();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (is != null){
                is.close();
            }
            if(isr!=null){
                isr.close();
            }
            if(br!=null){
                br.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        sb = null;
    }
    return pageString;
}

相关文章

  • 2020-06-10

    06.09华日志--- 今日工作 一、目标: 当日目标3单,完成1单 本月目标33单,应完成14单实际完成18单 ...

  • 6月18日工作日志

    经过我们所有老师的努力,终于通过检验可以线下开课了,这也预示着我们开始忙碌起来。 根据庞老师制定的暑假活动方案,不...

  • 4月18日工作日志

    17日晚上八点,肖书记、孙县长再次调度早稻生产工作。进一步要求,一要全面完成早稻种植任务。二要备足油菜田再生稻秧田...

  • 成功日志

    每日工作日志 时间+成功日志 姓名: 一、今天我做了什么?(和事业相关) 8:00-10:00 10:00-12:...

  • 西雅图猛虎军团】 2016年3月21日工作日志 今日工作流程安排: A、9:00—10:30 西雅图一楼办公室集合...

  • 18期张泽莲-时间管理心智模型

    18期21天训练营2营的张泽莲 一、认知突围 (1)能力 工作:现在在电子公司作QE,每日工作昏昏噩噩,谁都可以替...

  • 项目监控

    1.项目日志:当日工作是否完成;需要帮助的事项。不用日志评价人,填写项目工时。2.度量:进度工期偏差率:(实际完成...

  • 每日工地日志

    2022年7月18号,星期一,阴天,依然浙江省妇产医院工地。 今天,天空有点阴沉,灰蒙蒙,好似老天爷心情不好的状况...

  • 8组郭春红学习心得~弯柳树村网络学习班《反省后,我的眼中处处是天

    *【郭春红2020年2月20日】工作与*成长日志*今日工作 【今日学习日志】 1,5:00起床,洗漱完毕,5:15...

  • 日记录

    今日工作整理,从5个方面记录。 1.关于日志分享 与智邦伙伴谈日志分享,大家对于写分享还是有些头大,总觉得描述工作...

网友评论

      本文标题:2016年09月18日工作日志

      本文链接:https://www.haomeiwen.com/subject/yepgettx.html