2012-04-09 5 views
0

мне нужно вызвать API с аргументами POST, например:Как Вызов POST XML API

I «Посмотрел XDocument, но не уверен, как отправить параметры в запрос. Я также не уверен, как бы я назвал асинхронно, и даже если бы я хотел или лучше/проще работать в другом потоке.

Я бы назвал это из моего окна на основе приложения C#.

ответ

2

Вы можете использовать один из Upload methods из WebClient.

WebClient client = new WebClient(); 
string response = client.UploadString(
        "http://localhost/myAPI/?options=blue&type=car", 
        "POST data"); 
+0

Спасибо за указатель, это очень помогло. Я также обнаружил, что мне нужно также установить client.Headers. Заголовки [«Content-Type»] = «application/x-www-form-urlencoded»; – Drahcir

0

Звоните ему откуда? Javascript? В этом случае вы можете использовать JQuery:

http://api.jquery.com/jQuery.post/

$.post('http://localhost/myAPI/', { options: "blue", type="car"}, function(data) { 
    $('.result').html(data); 
}); 

данных будет содержать результат вашего поста.

Если с серверной стороны вы можете использовать HttpWebRequest и записывать в него поток с вашими параметрами.

// Create a request using a URL that can receive a post. 
     WebRequest request = WebRequest.Create ("http://localhost/myAPI/"); 
     // Set the Method property of the request to POST. 
     request.Method = "POST"; 
     // Create POST data and convert it to a byte array. 
     string postData = "options=blue&type=car"; 
     byte[] byteArray = Encoding.UTF8.GetBytes (postData); 
     // Set the ContentType property of the WebRequest. 
     request.ContentType = "application/x-www-form-urlencoded"; 
     // Set the ContentLength property of the WebRequest. 
     request.ContentLength = byteArray.Length; 
     // Get the request stream. 
     Stream dataStream = request.GetRequestStream(); 
     // Write the data to the request stream. 
     dataStream.Write (byteArray, 0, byteArray.Length); 
     // Close the Stream object. 
     dataStream.Close(); 
     // Get the response. 
     WebResponse response = request.GetResponse(); 
     // Display the status. 
     Console.WriteLine (((HttpWebResponse)response).StatusDescription); 
     // Get the stream containing content returned by the server. 
     dataStream = response.GetResponseStream(); 
     // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader (dataStream); 
     // Read the content. 
     string responseFromServer = reader.ReadToEnd(); 
     // Display the content. 
     Console.WriteLine (responseFromServer); 
     // Clean up the streams. 
     reader.Close(); 
     dataStream.Close(); 
     response.Close(); 
+1

Из вопроса: 'Я бы назвал это из своего окна на C# -приложении .' –

0

Чтобы бросить еще один вариант в кольцо, вы можете рассмотреть вопрос об использовании PostAsync метода HttpClient в .NET 4.5. По общему признанию, непроверенный удар:

 HttpClient client = new HttpClient(); 
     var task = client.PostAsync(string.Format("{0}{1}", "http://localhost/myAPI", "?options=blue&type=car"), null); 
     Car car = task.ContinueWith(
      t => 
      { 
       return t.Result.Content.ReadAsAsync<Car>(); 
      }).Unwrap().Result; 
Смежные вопросы