2012-08-23 93 views
5

我有这个代码,我试图将其转换为RestSharp。为了清晰起见,我已经移除了使用块来浓缩它。如何在RestSharp中发送POST请求?

using System.IO; 
using System.Net; 
using RestSharp; 

string GetResponse(string url,string data) 
{ 
    var request = (HttpWebRequest)WebRequest.Create(url); 
    request.Method = "POST"; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    var bytes = Encoding.UTF8.GetBytes(data); 
    request.ContentLength = bytes.Length; 
    request.GetRequestStream().Write(bytes, 0, bytes.Length); 
    var response = (HttpWebResponse)request.GetResponse(); 
    var stream = response.GetResponseStream(); 
    if (stream == null) return string.Empty; 
    var reader = new StreamReader(stream); 
    return reader.ReadToEnd(); 
} 

我试过的东西的顺序:

string GetResponse(string url, string data) 
{ 
    var client = new RestClient(url); 
    var request = new RestRequest("", RestSharp.Method.POST); 
    request.AddParameter("application/x-www-form-urlencoded", data); 
    var response = client.Execute(request); 
    return response.Content; 
} 

我似乎无法使用POST一个RestSharp要求,什么是送在application/x-form-urlencoded POST请求正确的格式?

+0

是你看到什么样的错误? – Luxspes

+0

使用请求的java服务器(我无法控制)给第二个请求一个空指针异常。基本上从它的角度来看,请求有所不同。我猜测唯一真正的调试方法是查看wireshark中的第一个请求,然后尝试让RestSharp版本以相同的方式运行。希望有一些快速的见解,否则... –

+0

如果您与堆栈跟踪共享空指针异常消息,它可能会为您提供一些建议 – Luxspes

回答

5

所以事实证明,参数都已经在数据串中被序列化了。而我需要手动将它们添加到RestSharp请求。

foreach (var pair in data) 
{ 
    request.AddParameter(pair.Key, pair.Value); 
} 

,其中数据是键/值对结构