【发布时间】:2016-03-21 07:24:10
【问题描述】:
我已经实现了一个 WCF RESTful 网络服务,它在 http POST 期间通过原始正文获取参数。当通过 "POSTMAN" chrome 扩展进行测试时,它会给出如下图所示的预期结果:
现在我想在使用以下代码通过 ASP Web 应用程序使用相同服务时获得相同的结果
JavaScriptSerializer ser = new JavaScriptSerializer();
var request = (HttpWebRequest)WebRequest.Create("http://192.168.0.19/SSARESTservice/SSA/IMEIVerification");
request.Method = "POST";
request.ContentType = "application/json";
DeviceData data = new DeviceData() { IMEI = "352423061590616" };
string str = ser.Serialize(data);
byte[] databyte = System.Text.Encoding.UTF8.GetBytes(str);
request.ContentLength = databyte.Length;
var reqStrm = request.GetRequestStream();
reqStrm.Write(databyte, 0, databyte.Length);
var response = (HttpWebResponse)request.GetResponse();
var respStrm = response.GetResponseStream();
StreamReader reader = new StreamReader(respStrm);
string bodyprm = reader.ReadToEnd();
但是在执行上述代码时会出现以下错误
远程服务器返回错误:(400) Bad Request。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Net.WebException:远程服务器返回错误:(400)错误请求。
第 34 行:var response = (HttpWebResponse)request.GetResponse();
这是我的运营合同
[WebInvoke(UriTemplate = "IMEIVerification", Method = "POST", ResponseFormat= WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest)
[OperationContract]
JsonResponseProps VerifyDevice(DeviceData data);
以及实现
public JsonResponseProps VerifyDevice(DeviceData data)
{
JsonResponseProps jis = new JsonResponseProps();
using (con = new SqlConnection(connection))
{
con.Open();
cmd = new SqlCommand("select IMEI from dbo.tbl_master_Devicedata where IMEI='" + data.IMEI + "'", con);
var IMEI = cmd.ExecuteScalar();
if (IMEI != null)
{
jis.msg = "Verification Successful";
jis.success = "true";
}
else
{
jis.msg = "Verification Failed";
jis.success = "false";
}
con.Close();
}
return jis;
}
谢谢
【问题讨论】:
-
能否分享一下restful服务中定义方法调用的代码?请在接口和方法定义中包含所有 WCF 属性。请编辑问题以清理代码块。
-
添加跟踪监听器以便了解更多关于异常的信息!
-
@SOHO Developer 我已经使用 SO 快 3 年了,但从未发布过问题。很高兴看到 cmets。我将通过添加 wcf 服务代码来编辑我的问题
标签: c# asp.net web-services wcf rest