以下是数据格式:
{
"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"
}
]}
传的json有东西么
有的 就是 images对象是有问题的, 谢谢!
代码也不格式化下,看着难受(╯﹏╰)
好了
response.ContentType = "application/json";
这个没什么区别的,后面的 images提交总是空的对象,谢谢!
@Armys: 你先保证你提交的各个参数都是没问题,再去找其他错误,这个参数本身也是有影响的
@MrNice: 参数是绝对对的 就是 images对象获取不到值,我想请问下,它应该也是JSON 了为什么无法获取到值,谢谢!
@Armys: 你先传递一个图片的信息,看看结果
@MrNice: 一样的 404
@Armys: 你确定你传的api 的url没问题?
@MrNice: 这个是正常的 IMG的参数有误
把/转义下,不然你的路径被截断了
那是图片生成的包含在 ""内
@Armys: 是不会被再次转义的
我像问一句你那个地方报404错误
@稳稳的河: WebRequest.Create?
@稳稳的河: 是的
@Armys: ConfigurationManager.AppSettings["upload_digital_material"]取到的是什么?看这个文件你找的到不
@稳稳的河: 路径 前面的IP 和地址
@Armys: 这个完整路径,你项目或网站启动,你直接去文件夹或者浏览器查看你保证找不到,要你把ConfigurationManager.AppSettings["upload_digital_material"]取到的给我看下,都不给
@稳稳的河: 路径都是正常的,就是带了images的参数就会报错!
@Armys: 路径正常那不应该WebRequest.Create报错,你自己抓一个包,看下它到底是哪里的路径又问题,我不帮你找404了,只能到此了,别见怪
@稳稳的河: 好的 谢谢
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得到各个参数值
还没解决么?
好了 还是的自己慢慢琢磨
@Armys: 问题是什么呢?ConfigurationManager.AppSettings["upload_digital_material"]?
我之前也做过一个类似的。java写的client,c#的服务端。。
java中的base64编码,和c#中的编码有区别(如果没用到对的的话。。)
@小小高: 好久了 忘记了都