Опрос с помощью HttpWebRequest

Я использую этот API, который принимает изображение и отправляет обратно описание его содержимого. Согласно документам, CURL выглядит так:

 curl -i -X POST \
-H "Authorization: CloudSight [key]" \
-F "image_request[image]=@Image.jpg" \
-F "image_request[locale]=en-US" \
https://api.cloudsightapi.com/image_requests

Мой код для отправки запроса, как показано ниже:

var request = (HttpWebRequest)WebRequest.Create(cloudsight_url);
request.Method = "POST";
request.Headers.Add("Authorization", "CloudSight R6USrcKxMym0EP2peuYtVA");
string s1 = string.Format("image_request[locale]={0}&image_request[remote_image_url]={1}", "en-US", imgurl);

// Send Data
StreamWriter myWriter = null;
myWriter = new StreamWriter(request.GetRequestStream());
myWriter.Write(s1);
myWriter.Close();
var response1 = (HttpWebResponse)request.GetResponse();
string result2 = "";

using (StreamReader streamReader = new StreamReader(response1.GetResponseStream()))
{
    var output = streamReader.ReadToEnd();
    streamReader.Close();
    result2 = output.ToString();    
}

Запрос успешно отправлен, однако сервис возвращается { "status" : "not completed" }, В документах говорится, что продолжать опросить ответ до { "status" : "completed" } ответ возвращается. Как мне достичь этого?

1 ответ

Как вы указали, в документации говорится, что вы должны продолжить опрос, пока ответ не будет помечен как завершенный.

Все, что вам действительно нужно сделать, это поместить ваш веб-запрос HTTP в цикл, который продолжается до завершения. Вероятно, также хорошая идея выйти из цикла через некоторое время без успеха, чтобы избежать бесконечного цикла. Поместить петлю в отдельную нить также может быть целесообразно.

Другие вопросы по тегам