如何处理来自youtube gdata"响应"的400响应?



我有一个应用程序,允许用户填写包含youtube链接的表格。很多时候,视频链接是无效的,我不得不手动修复它。我想在允许用户提交表单之前验证url。

我在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);
}

无效的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?此外,代码似乎在到达success:function()之前到达了"console.log("successy-->"+y);"。

编辑:

我的另一个选择是使用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表示有效视频id,400表示无效视频id。

为了获得响应状态代码,我不得不将检查转移到后端java。Javascript就是做不到。

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);
            }
        }
    }

相关内容

  • 没有找到相关文章

最新更新