2016-11-12 3 views
0

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

curl -i -X POST \ 
-H "Authorization: CloudSight [key]" \ 
-F "image_request[image][email protected]" \ 
-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-запрос в цикл, который продолжается до завершения. Вероятно, также неплохо выйти из цикла через определенное время без успеха, чтобы избежать бесконечного цикла. Включение петли в отдельный поток также может быть разумным.

+0

Какую часть веб-запроса http я буду помещать внутри цикла? Не будет ли он повторять один и тот же запрос снова и снова? – psyoptica

+0

В соответствии с документацией вы получаете токен из '/ image_requests'. Затем вы отправляете этот токен на запрос ответа на изображение. – MeterLongCat

+0

Да, но токен не работает для неполного запроса. Или вы хотите сказать, что мне нужно использовать этот токен, чтобы отправить другой запрос и так далее? – psyoptica