asp.net后台模拟POST请求接口 报500错误但是这个接口我用jquery ajax 请求是没问题的排查接口问题,那么是啥原因呢?找大神帮忙看看

何健雄 2017-03-22 01:41:04
public void PostFunction()
{
//string param = "{\"waitingdeliver\":\"0\",\"hyid\":\"140\",\"page\":\"1\",\"pageSize\":\"5\"}";
string serviceAddress = "http://120.76.212.74::451/Shop/Handler1.ashx";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress);
request.Method = "POST";
request.ContentType = "application/json";
string strContent = @"{ ""waitingdeliver"": ""0"",""hyid"": ""140"",""page"": ""1"",""pageSize"": ""5""}";
using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))
{
dataStream.Write(strContent);
dataStream.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1)
{
encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
string retString = reader.ReadToEnd();
//解析josn
JObject jo = JObject.Parse(retString);
Response.Write(jo["message"]["mmmm"].ToString());

}
...全文
464 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
何健雄 2017-03-23
  • 打赏
  • 举报
回复
引用 10 楼 qq_25095899 的回复:
楼主曾经在某帖子里这样回复 那些尝试帮助他的网友们:
首先我对我的上一个帖子提出的问题表示抱歉,问题没描述清楚, 因为我贴的是完整代码,自己复制出去运行就可以知道原因,
引用 3 楼 diaodiaop 的回复:
代码有问题. 如果是POST的话.那么类型不是app/json而是

 request.ContentType = "application/x-www-form-urlencoded";
否则你的数据上不去的.
3#的回复谢谢,的确是因为application/x-www-form-urlencoded 的原因,上个贴抱歉
弘毅致远 2017-03-22
  • 打赏
  • 举报
回复
楼上的好细心
大然然 2017-03-22
  • 打赏
  • 举报
回复
楼主曾经在某帖子里这样回复 那些尝试帮助他的网友们:
正怒月神 版主 2017-03-22
  • 打赏
  • 举报
回复
换成如下的看看吧。注意 是异步的 http://blog.csdn.net/hanjun0612/article/details/60126445
wq1234wq 2017-03-22
  • 打赏
  • 举报
回复
你把你ajax提交的的header贴出来,Chrome按F12调试,然后点击NetWork,单击请求你接口的的Uri
  • 打赏
  • 举报
回复
如果你现在不能得到服务器端,可能就只好“假想”一下服务器端的编程机制(ashx)内部处理,然后自己编写一个 ashx,然你的“query ajax”部分和 c# 分别访问自己编写的这个 ashx,看看收到数据方面有什么区别。 比如说你的 c# 部分程序很明显是问方式、在消息体中整个都是一个文本。那么你按照这个假想而编写的 ashx 端,能正常取得 waitingdeliver、pageSize等参数了,说不定就不能正常取得自己的 ajax 的代码上传的参数了呢?!那就能猜出问题。
  • 打赏
  • 举报
回复
从服务器端调试,并且贴出来,是最直接的。
丰云 2017-03-22
  • 打赏
  • 举报
回复
我擦。。。。发错地方了。。。。
丰云 2017-03-22
  • 打赏
  • 举报
回复
你的代码有问题,记住,代码越简洁,越可靠! 给你看看我我刚调试成功的一个例子: 1. 封装的访问方法

using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

namespace WuHanHouse
{
    public class HttpsRequest
    {
        private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;     
        }

        public static string PostHttpsRequest(string url, Dictionary<string, string> parameters)
        {
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.ProtocolVersion = HttpVersion.Version10;
            request.CookieContainer = new CookieContainer();
            request.AllowAutoRedirect = true;
            request.Timeout = 1000 * 60;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.Referer = url;

            if (!(parameters == null || parameters.Count == 0))
            {
                var param = "";
                foreach (var key in parameters.Keys)
                {
                    param += "&" + key + "=" + parameters[key];
                }
                using (var sw = new StreamWriter(request.GetRequestStream()))
                {
                    sw.Write(param.Trim('&'));
                    sw.Close();
                }
            }
            var res = request.GetResponse() as HttpWebResponse;
            var st = res.GetResponseStream();
            var sr = new StreamReader(st);
            return sr.ReadToEnd();
        }

    }
}
2. 调用的例子

            var parameters = new Dictionary<string, string>();
            parameters.Add("PostType", "FOOD");
            parameters.Add("Category", "");
            parameters.Add("PageIndex", "1");
            parameters.Add("PageSize", "8");
            var res = HttpsRequest.PostHttpsRequest("https://www.myvivaplan.com/Blog/List", parameters);
by_封爱 2017-03-22
  • 打赏
  • 举报
回复
代码有问题. 如果是POST的话.那么类型不是app/json而是

 request.ContentType = "application/x-www-form-urlencoded";
否则你的数据上不去的.
丰云 2017-03-22
  • 打赏
  • 举报
回复
两边的错误夹到一起了。。。。。 你这边模拟提交的数据肯定是接口要求的不一致, 然后接口那边的代码又不够健壮。。。。见风死。。。。
zklsdfd 2017-03-22
  • 打赏
  • 举报
回复
根据提示应该是远程服务器内部代码错误,1 本地提交信息是否符合要求 2 检查服务器内部代码是否有错 3 远程服务器是否有环境未配对

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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