搜索
aardio官方社区 门户 查看主题

web.rest上传图片如何向header里面添加内容

发布者: x876526966 | 发布时间: 2018-4-14 15:28| 查看数: 151| 评论数: 5|帖子模式

         之前看过Jacen写的这篇帖子 链接:http://bbs.aardio.com/forum.php? ... ;highlight=web.rest   学习了如何使用 web.rest 处理网络请求。感谢教导.
这几天写一个东西,因为是公司任务不做过多阐述,后端为java, 客户端用用aardio实现,当前要实现的功能:为登录用户上传头像图片的功能。
        用户登录后会产生一个token,用户在软件内上传任何东西(文件,视频,图片),都需要传token。
        目前图片可以上传成功。
        当前遇到问题:
        使用restClient._http.addHeaders={} 向 header里面添加用户token,使的上传的图片对应此用户。在这个环节一直未能成功。尝试了4天了。依旧没能成功。特发帖求指点.
     

       <1>以下截图是我使用postmain发送请求给接口,返回成功的数据 (显示图片上传成功,登录状态 true, 用户信息正常返回)
       1.png

       <2>以下截图是我执行自己代码发送请求给接口,返回失败的信息(显示图片上传成功,用户登录状态 false,用户信息返回null)
       3.png



        以下是自己代码片段:
      

  1.         import web.rest.jsonLiteClient;
  2.         import web.json;
  3.        
  4.         var restClient = web.rest.jsonLiteClient();
  5.        
  6.         var restApi = restClient.api("http://www.xxxx.com/adxxxxx/xxxxo/upload.json?files=");
  7.        

  8.         var token = string.load("D:\token.txt"); //加载用户登录产生的token
  9.        
  10.        
  11.         restClient._http.addHeaders = {
  12.        
  13.                 'X-CustomToken' = token
  14.        
  15.         }
  16.        
  17.        
  18.         restClient.sendMultipartForm( {
  19.                        
  20.                         files = "@D:\test.jpg";//上传文件路径
  21.                        
  22.                 },function(str,sendSize,contentLength){
  23.                 ..io.print("正在上传...",sendSize,contentLength);
  24.             }
  25.         );
  26.        
  27.                

  28.         restApi.upload();
  29.        
  30.         restClient.lastResponse();
复制代码


     以上为我写的代码,有哪些写的不妥的地方。老师们指正。 多谢.

最新评论

x876526966 发表于 2018-4-14 16:39:01
补充一张成功请求的 post的抓包数据  
Jacen.He 发表于 2018-4-14 22:02:22
你发了这一大堆截图都只是在说明用浏览器成功了,用aardio失败了。
包括你返回的这些数据截图,这都是贵公司内部规定的格式。

而你第二个帖子,看样子似乎是提交的数据,还是一张打不开的图片。
网址还抹掉了,代码也无法测试,

客户端、服务端即然都是你们公司自己写的,
你客户端提交的数据又是哪里不符合要求了?!

即然服务端系统也是贵司自己做的,
那你至少要告诉我你需要的正确数据包是什么,然后提交的数据包又如何导致你的错误,
难道做java后端的,连有意义的错误信息也找不到?!有任何关于这方面的信息吗?!

即使别人帮你找,从哪里开始找呢?!
松江 发表于 7 天前
x876526966 发表于 2018-4-14 16:39
补充一张成功请求的 post的抓包数据

基础没有掌握好,你添加的头没有成功,aardio的表,如果键名包含了不合法字符或者是纯数值,需要用方括号[],所以添加的头应该是:
restClient._http.addHeaders = {
    [ 'X-CustomToken' ]  = token
}

你原来的方法实际上添加的头是一个数组,数组只有一个布尔值:false

Jacen.He 发表于 7 天前
松江 发表于 2018-4-15 11:37
基础没有掌握好,你添加的头没有成功,aardio的表,如果键名包含了不合法字符或者是纯数值,需要用方括号[], ...

很细心,非常好。
不过基础语法写错这个事,倒是可以理解,我都有时候会犯这样的错误,不是有句话说的,编程中 90%的错误都是最简单的笔误。

但虽然是简单的笔误,没有可运行的代码,我们是人,不是机器,不是BUG扫描枪.........,  有时候还是需要运行、分析、对比。

例如所浏览器提交的数据包拿出来,
再把自己程序提交的数据包拿出来,两次提交的数据一对比,看 http头里 X-CustomToken有什么不同,问题就出来了。

如果是几句代码,我们还可以人肉BUG扫描枪,但通常我们的代码量都很多,所以好的排错,查错方法,我们还是要了解了解。
松江 发表于 7 天前
Jacen.He 发表于 2018-4-15 12:43
很细心,非常好。
不过基础语法写错这个事,倒是可以理解,我都有时候会犯这样的错误,不是有句话说的, ...

确实,没有可以直接运行的代码,有时候不好排查
-------

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-22 11:02 , Processed in 0.062502 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表