首页 新闻 会员 周边 捐助

请教 POST JSON 提交

0
悬赏园豆:30 [已解决问题] 解决于 2016-09-02 09:34

以下是数据格式:

{

  "eid": "123",

  "clname": "test",

  "images":[

    {

               "img": "",

             "name": "dieiee.jpg"

      }

  ]

 }

images对象存的是一个 BASE64图片编码和图片名称

请看images的赋值:

json = "[";
                for (int i = 0; i < imgList.Length; i++)
                {
                    json += "{\"img\":\"" + imgList[i] + "\",\"name\":\"" + System.Web.HttpUtility.UrlEncode(cardName + i) + ".jpg\"},";
                }
                if (json.Length != 1)
                {
                    json = json.Substring(0, json.Length - 1);
                }
                json += "]";

以下是提交方法:

string json = "{\"eid\":\"" + eid + "\",\"clname\":\"" + clname + "\",\"images\":" + images + "}";            

byte[] bytes = Encoding.UTF8.GetBytes(json);            

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ConfigurationManager.AppSettings["upload_digital_material"]);             request.Method = "POST";    

request.ContentLength = bytes.Length;            

request.ContentType = "text/xml";            

Stream reqstream = request.GetRequestStream();           

reqstream.Write(bytes, 0, bytes.Length);

request.Timeout = 40000;           

request.Headers.Set("Pragma", "no-cache");            

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream streamReceive = response.GetResponseStream();            

Encoding encoding = Encoding.UTF8;

StreamReader streamReader = new StreamReader(streamReceive, encoding); string strResult = streamReader.ReadToEnd();            

streamReceive.Dispose();            

streamReader.Dispose();            

return strResult;

路劲是对的,但是一拼接 images对象后就出现404,请教下各位怎么解决!

问题补充:

这是我提交的JSON:

{

"eid":"123456789012345678",

"clname":"%e3%80%8a%e5%8d%b0%e7%ab%a0%e5%88%bb%e5%88%b6%e8%ae%b8%e5%8f%af%e8%af%81%e3%80%8b",

"images":[
  {
    "img": "test",
    "name": "test.jpg"
  }
]}

Armys的主页 Armys | 初学一级 | 园豆:179
提问于:2015-09-28 11:05
< >
分享
最佳答案
0

传的json有东西么

收获园豆:30
lb1208 | 菜鸟二级 |园豆:371 | 2015-09-28 11:20

有的 就是 images对象是有问题的, 谢谢!

Armys | 园豆:179 (初学一级) | 2015-09-28 11:21
其他回答(5)
0

代码也不格式化下,看着难受(╯﹏╰)

最佳损友。 | 园豆:63 (初学一级) | 2015-09-28 11:13

好了

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 11:15
0
response.ContentType = "application/json";
MrNice | 园豆:3468 (老鸟四级) | 2015-09-28 11:16

这个没什么区别的,后面的 images提交总是空的对象,谢谢!

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 11:19

@Armys: 你先保证你提交的各个参数都是没问题,再去找其他错误,这个参数本身也是有影响的

支持(0) 反对(0) MrNice | 园豆:3468 (老鸟四级) | 2015-09-28 11:22

@MrNice: 参数是绝对对的 就是 images对象获取不到值,我想请问下,它应该也是JSON 了为什么无法获取到值,谢谢!

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 11:23

@Armys: 你先传递一个图片的信息,看看结果

支持(0) 反对(0) MrNice | 园豆:3468 (老鸟四级) | 2015-09-28 11:27

@MrNice: 一样的  404

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 11:29

@Armys: 你确定你传的api 的url没问题?

支持(0) 反对(0) MrNice | 园豆:3468 (老鸟四级) | 2015-09-28 12:19

@MrNice: 这个是正常的  IMG的参数有误

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 12:20
0

把/转义下,不然你的路径被截断了

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 11:51

那是图片生成的包含在 ""内

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 11:52

@Armys: 是不会被再次转义的

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 11:54

我像问一句你那个地方报404错误

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 12:08

@稳稳的河: WebRequest.Create?

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 12:09

@稳稳的河: 是的

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 12:10

@Armys: ConfigurationManager.AppSettings["upload_digital_material"]取到的是什么?看这个文件你找的到不

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 12:14

@稳稳的河: 路径 前面的IP 和地址

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 12:19

@Armys: 这个完整路径,你项目或网站启动,你直接去文件夹或者浏览器查看你保证找不到,要你把ConfigurationManager.AppSettings["upload_digital_material"]取到的给我看下,都不给

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 12:22

@Armys: 你去试试了没有,就是它找不到报的错误,你的网站是用域名还是IP,你自己好好看看这个路径吧,404的这种问题,定位到地方了,你应该很快就可以找到

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 12:33

@稳稳的河: 路径都是正常的,就是带了images的参数就会报错!

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 12:34

@Armys: 路径正常那不应该WebRequest.Create报错,你自己抓一个包,看下它到底是哪里的路径又问题,我不帮你找404了,只能到此了,别见怪

支持(0) 反对(0) 稳稳的河 | 园豆:4216 (老鸟四级) | 2015-09-28 12:40

@稳稳的河: 好的  谢谢

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2015-09-28 12:40
0
  var json = {

              "eid": "123456789012345678",

              "clname": "%e3%80%8a%e5%8d%b0%e7%ab%a0%e5%88%bb%e5%88%b6%e8%ae%b8%e5%8f%af%e8%af%81%e3%80%8b",

              "images": [
                {
                    "img": "test",
                    "name": "test.jpg"
                }
              ]
          };

          $("#clickme").on("click", function (e) {
              e.preventDefault();

              $.ajax({
                  url: "home/getjson",
                  data: json,
                  dataType: "Json",
                  success: function () {
                      alert("success");
                  }
              });
          });

以上是前台代码,

public void GetJson()
        {
            string s = string.Empty;
            var query = Request.QueryString;
            foreach (var key in query)
            {
                s = string.Format("{0}:{1}", key.ToString(), query.Get(key.ToString()));
            }
        }

 

测试后后台可以从Request.QueryString得到各个参数值

happydaily | 园豆:260 (菜鸟二级) | 2015-09-28 14:04
0

还没解决么?

小小高 | 园豆:1307 (小虾三级) | 2016-09-01 16:58

 好了  还是的自己慢慢琢磨

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2016-09-02 09:32

@Armys: 问题是什么呢?ConfigurationManager.AppSettings["upload_digital_material"]?

我之前也做过一个类似的。java写的client,c#的服务端。。

java中的base64编码,和c#中的编码有区别(如果没用到对的的话。。)

支持(0) 反对(0) 小小高 | 园豆:1307 (小虾三级) | 2016-09-02 10:07

@小小高: 好久了  忘记了都

支持(0) 反对(0) Armys | 园豆:179 (初学一级) | 2016-09-02 10:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册