Windows phone 7 wp7-使用RestSharp在请求正文中使用参数发布http请求

Windows phone 7 wp7-使用RestSharp在请求正文中使用参数发布http请求,windows-phone-7,restsharp,Windows Phone 7,Restsharp,我试图通过请求将参数发布到一个返回JSON对象的服务。该服务在android和iOS上运行良好。我正在努力让这个工作的wp7。该服务要求内容类型为“application/json”,我在下面粘贴了设置http请求的代码: var client = new RestClient(baseurl); var request = new RestRequest(); request.Resource = "login";

我试图通过请求将参数发布到一个返回JSON对象的服务。该服务在android和iOS上运行良好。我正在努力让这个工作的wp7。该服务要求内容类型为“application/json”,我在下面粘贴了设置http请求的代码:

            var client = new RestClient(baseurl);
            var request = new RestRequest();
            request.Resource = "login";
            request.Method = Method.POST;
            request.AddHeader("Accept", "application/json");
            request.AddHeader("content-type", "application/json");         
            request.RequestFormat = DataFormat.Json;

            var postData = new Dictionary<string, string>()
            {
                {"key1",value1},
                {"key2",value2}
            };

            request.AddBody(postData); 
            client.ExecuteAsync(request, response =>
            {
                var jsonUser = response.Content;
            });
var-client=newrestclient(baseurl);
var request=new RestRequest();
request.Resource=“login”;
request.Method=Method.POST;
AddHeader(“接受”、“应用程序/json”);
AddHeader(“内容类型”、“应用程序/json”);
request.RequestFormat=DataFormat.Json;
var postData=新字典()
{
{“key1”,value1},
{“key2”,value2}
};
请求.AddBody(postData);
client.ExecuteAsync(请求、响应=>
{
var jsonUser=response.Content;
});
我从服务器得到的响应错误是一个内部服务器错误。上面的代码有什么问题吗。我还尝试了request.AddParameter方法,但结果相同。其代码如下所示:

            var client = new RestClient(baseurl);
            var request = new RestRequest();
            request.Resource = "login";
            request.Method = Method.POST;
            request.AddHeader("Accept", "application/json");
            request.AddHeader("content-type", "application/json");         
            request.RequestFormat = DataFormat.Json;

            var postData = new Dictionary<string, string>()
            {
                {"key1",value1},
                {"key2",value2}
            };
            var json = JsonConvert.SerializeObject(postData);
            request.AddParameter("application/json", json, ParameterType.RequestBody);
            client.ExecuteAsync(request, response =>
            {
                var jsonUser = response.Content;
            });
var-client=newrestclient(baseurl);
var request=new RestRequest();
request.Resource=“login”;
request.Method=Method.POST;
AddHeader(“接受”、“应用程序/json”);
AddHeader(“内容类型”、“应用程序/json”);
request.RequestFormat=DataFormat.Json;
var postData=新字典()
{
{“key1”,value1},
{“key2”,value2}
};
var json=JsonConvert.SerializeObject(postData);
AddParameter(“application/json”,json,ParameterType.RequestBody);
client.ExecuteAsync(请求、响应=>
{
var jsonUser=response.Content;
});

在这两种情况下,我都做错了什么吗

我觉得你的#1方法还可以。。。能否安装并打开Fiddler,打开模拟器(打开模拟器之前Fiddler必须运行),并检查请求是否正确?感谢Pedro的回复。我试试看。在我弄明白的时候。你能告诉我代码是request.AddParameter(“key1”,value1,ParameterType.GetOrPost”);AddParameter(“key2”,value2,ParameterType.GetOrPost);做同样的事情。与中一样,它是否将参数作为HTTP请求体的一部分发送。我不想将参数作为查询字符串发送。谢谢。使用它将在帖子中获得您的值,而不是作为查询字符串,但如果您需要的话,它不会被JSON编码!尝试
request.AddParameter(“json”,json)谢谢各位..它与request.AddParameter(“key1”,value1,ParameterType.GetOrPost)一起工作;服务正在寻找它,但没有json编码。正是这种联系让我找到了正确的解决方案。而且Fiddler也不能很好地与Windows emulator配合使用。可能需要一些设置才能使用模拟器。但是WireShark工作得很好。感谢佩德罗和德里克的回复。