У меня есть приложение, которое позволяет пользователям заполнять форму, содержащую ссылку на YouTube. Много раз, ссылка на видео недействительна, и я должен ее исправить вручную. Я хочу проверить URL-адрес, прежде чем я позволю пользователю отправить форму.Как обрабатывать ответ 400 из ответа gtata youtube?
Я написал код на Firebug консоли:
function test() {
// var x1 = "http://gdata.youtube.com/feeds/api/videos/OvcaXrWFM2Q";
var x1 = "http://gdata.youtube.com/feeds/api/videos/VIDEO_ID?alt";
var asd = false;
$.ajax({
dataType: 'jsonp',
async: false,
url: x1,
/* success: function(data) {
console.log("success --> ", data.length);
return true;
},
error: function(error) {
console.log("error --> ", error);
},
*/ complete: function(e){
console.log("complete --> ", e);
return true;
}
});
// return false ;
return asd;
}
var y = test();
if (y) {
console.log("success y --> " + y);
} else {
console.log("error y --> " + y);
}
Invalid 400 запрос:
>>> function test() { // var x1 = "http://gdata.y...} else { console.log("error y --> " + y); }
error y --> false
"NetworkError: 400 Bad Request - http://gdata.youtube.com/feeds/api/videos/VIDEO_ID?alt&callback=jsonp1375741532312&_=1375800027900"
Действительный ответ:
>>> function test() { var x1 = "http://gdata.you...} else { console.log("error y --> " + y); }
error y --> false
success --> 4516
jquery....min.js (line 29)
complete --> undefined
jquery....min.js (line 29)
Что я могу сделать, чтобы поймать, что 400? Кроме того, кажется, что код попадает в «console.log (« success y -> »+ y); прежде чем он достигнет успеха: function().
Edit:
Мой другой вариант, чтобы отправить эту проверку бакэнду с помощью Java, но я предпочел бы его с помощью JS.
public static void main(String[] args) throws ParseException {
String[] urls = new String[2];
urls[0] = "http://gdata.youtube.com/feeds/api/videos/OvcaXrWFM2Q";
urls[1] = "http://gdata.youtube.com/feeds/api/videos/23487978923789423789342sufyu";
HttpURLConnection con;
HttpURLConnection.setFollowRedirects(false);
for (String url : urls) {
try {
con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestMethod("HEAD");
System.out.println(con.getResponseCode());
} catch (IOException e) {
System.out.println(e);
}
}
}
Выход Я получаю, как ожидалось, 200 для действительного идентификатора видео, 400 для недействительного.