• WCF(远程服务器返回错误: 400 错误的请求)


    类似相关问题有以下:

    WCF- restful接口 POST方式调用报错(远程服务器返回错误: 400 错误的请求)

    WCF Rest:不使用UriTemplate使用post方式传参解决HTTP400问题以及参数映射问题

    等等!

    具体原因参照:原创:转载请标明出处:http://www.cnblogs.com/sh91/p/3273072.html

    标记自己遇到的问题原因,描述如下:

    服务器接口:

    [WebInvoke(Method = "*", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    [OperationContract]
    string GetExptrainhist(string strjson);//入参为string类型

    客户端调用:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://localhost:8734/GetExptrainhist");
    request.ContentType = "application/json";

    request.Method = "POST";

    //======测试数据======start===============
    ExpTrainHist_req t = new ExpTrainHist_req();
    t.account = "exp";
    t.fc = "expTrainHist_req";
    t.starttime = "2017-04-17 13:00:00";
    t.endtime = "2017-04-17 14:04:51";
    string data = Newtonsoft.Json.JsonConvert.SerializeObject(t);

    //string inputString = "c901411";

    //======end===========

    string inputString = data;
    //string inputString = "{\"IdNumbr\":\"612523198308190014\",\"StuId\":\"901411\",\"SchCode\":\"1011099212\",\"TrainId\":\"3\",\"StartTime\":\"2017-04-17 00:00:01\",\"During\":\"3000\",\"ScoreHis\":\"10\"}";

    Byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(inputString);
    request.ContentLength = byteArray.Length;
    Stream rstream = request.GetRequestStream();
    rstream.Write(byteArray, 0, byteArray.Length);
    rstream.Close();

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();//此处报错:远程服务器返回错误: 400 错误的请求
    Stream stream = response.GetResponseStream();
    StreamReader SR = new StreamReader(stream);
    String info = SR.ReadToEnd();

    string temp = Newtonsoft.Json.JsonConvert.DeserializeObject(info).ToString();

    SR.Dispose();

    =====================

    http://www.cnblogs.com/sh91/p/3273072.html博客的问题原因:

    注意:JSON格式默认为“”引起,所以 "\"ss\""不能写为“ss”,否则还是HTTP400错误。因为未识别数据,将数据拼接到其他字节了吧

    自己的入参改为:

    //首先将data的 json字符串的双引号改成单引号,再加上双引号传到服务,问题解决。
    inputString = "\"" + data.Replace("\"","\'") + "\""

    Byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(inputString);
    request.ContentLength = byteArray.Length;
    Stream rstream = request.GetRequestStream();
    rstream.Write(byteArray, 0, byteArray.Length);
    rstream.Close();

  • 相关阅读:
    2021.1.28 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2020.12.14 个人训练赛补题报告
    2020.11.28 2020团体程序设计天梯赛补题报告
    2020.12.3 Codeforces Beta Round #73(Div2)补题报告
    Xhorse VVDI Prog V5.0.6 is Ready for BCM2 Adapter
    Program 2021 Ford Bronco All Keys Lost using VVDI Key Tool Plus
    Xhorse VVDI Prog V5.0.4 Software Update in July 2021
    How to use Xhorse VVDI2 to Exchange BMW FEM/BDC Module?
  • 原文地址:https://www.cnblogs.com/xxyxxb2080/p/6904086.html
Copyright © 2020-2023  润新知