2012-08-23 52 views
5

Tôi có mã này mà tôi đang cố chuyển đổi sang RestSharp. Tôi đã loại bỏ các khối sử dụng để ngưng tụ nó cho rõ ràng.Làm cách nào để gửi yêu cầu POST trong RestSharp?

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(); 
} 

tôi đã cố gắng một cái gì đó theo lệnh của:

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; 
} 

tôi dường như không thể gửi một yêu cầu sử dụng RestSharp, định dạng phù hợp để gửi một yêu cầu POST trong application/x-form-urlencoded là gì?

+0

gì lỗi là bạn nhìn thấy? – Luxspes

+0

Máy chủ java (mà tôi không có quyền kiểm soát) tiêu thụ yêu cầu là cho tôi một ngoại lệ con trỏ null cho yêu cầu thứ hai. Về cơ bản từ quan điểm của nó, yêu cầu là khác nhau. Tôi đoán cách duy nhất thực sự để gỡ lỗi này là để xem xét yêu cầu đầu tiên trong wireshark và sau đó thử và nhận được phiên bản RestSharp để hành xử theo cùng một cách. Được hy vọng cho một số cái nhìn sâu sắc khác nếu không ... –

+0

Nếu bạn chia sẻ thông điệp ngoại lệ con trỏ null với stacktrace, nó có thể có thể cung cấp cho bạn một số lời khuyên – Luxspes

Trả lời

5

Vì vậy, hóa ra tất cả các tham số đều đã được tuần tự hóa trong chuỗi dữ liệu. Trong khi đó, tôi cần phải thêm chúng vào yêu cầu RestSharp theo cách thủ công.

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

nơi dữ liệu là một Key/Value cặp struct

Các vấn đề liên quan