का उपयोग कर मैं बहुत भयानक WCF बाकी स्टार्टर किट में प्रदान की HttpClient उपयोग कर रहा हूँ अनुरोध।जेनेरिक पोस्ट Microsoft.HttpClient और HttpContentExtensions
public UserValidateResponse Validate()
{
HttpClient client = new HttpClient(baseUrl);
HttpMultipartMimeForm form = new HttpMultipartMimeForm();
form.Add("app_key", this.AppKey);
form.Add("user_key", this.UserKey);
HttpResponseMessage response = client.Post("user.validate", form.CreateHttpContent());
return response.Content.ReadAsXmlSerializable<UserValidateResponse>();
}
मैं एक अच्छा सामान्य GetRequest विधि है कि इस तरह दिखता है:: मैं निम्न विधि कि HelloTxt एपीआई के खिलाफ काम कर रहा है है
public T GetRequest<T>(string query)
{
HttpClient client = new HttpClient(baseUrl);
client.DefaultHeaders.UserAgent.AddString(@"http://www.simply-watches.co.uk/");
HttpResponseMessage response = client.Get(query);
response.EnsureStatusIsSuccessful();
T data = default(T);
try
{
data = response.Content.ReadAsXmlSerializable<T>();
return data;
}
catch (Exception ex)
{
Console.Write(String.Format("{0}: {1}", ex.Message, ex.InnerException.Message));
}
return data;
}
जिनमें से लाभ यह है कि आप इसे टी से पारित सकता है
public List<User> GetUsers(int deptid)
{
string query = String.Format("department.getUsers?api_key={0}&dept_id={1}", this.APIKey, deptId);
return GetRequest<List<User>>(query);
}
मैं अब, एक ही सामान्य शैली POST पद्धति करना चाहते हैं के बजाय प्राप्त और मुझे यकीन है कि मैं HttpContentExtensions उपयोग कर सकते हैं, लेकिन मैं च नहीं कर सकते हैं: इस यादृच्छिक उदाहरण के अनुसार प्रतिक्रिया प्रकार के रूप में अनुरोध को HttpMultipartMimeForm में बदलने के तरीके को देखें।
public T PostRequest<K, T>(string query, K request)
{
HttpClient client = new HttpClient(baseUrl);
// the following line doesn't work! Any suggestions?
HttpContent content = HttpContentExtensions.CreateDataContract<K>(request, Encoding.UTF8, "application/x-www-form-urlencoded", typeof(HttpMultipartMimeForm));
HttpResponseMessage response = client.Post(query, content);
response.EnsureStatusIsSuccessful();
T data = default(T);
try
{
data = response.Content.ReadAsXmlSerializable<T>();
return data;
}
catch (Exception ex)
{
Console.Write(String.Format("{0}: {1}", ex.Message, ex.InnerException.Message));
}
return data;
}
यह इस तरह कहा जा सकता है:
UserValidateResponse response = PostRequest<UserValidateRequest, UserValidateResponse>("user.validate", new UserValidateRequest(this.AppKey, this.UserKey));
यह इस एपीआई के खिलाफ काम करने के लिए है: http://hellotxt.com/developers/documentation यह है कि क्या मैं अब तक है। किसी भी सुझाव का स्वागत है! मैं प्रत्येक पोस्ट के लिए एक अलग रूप परिभाषित कर सकता हूं, लेकिन यह सामान्य रूप से करना अच्छा होगा।
मेरे पास एक ऐसा करने के लिए एक ही रास्ता महसूस प्रतिबिंब का उपयोग करें और एक HttpMultipartMimeForm एक वर्ग के सरल गुणों के आधार पर, या क्रमानुसार वस्तु का निर्माण और उसके बाद प्राप्त करने के लिए है रूट एक्सएमएल नोड के तहत पहले बच्चे। – Junto