android - Android HttpPost从Youtube获取 “Invalid request URI”

标签 android youtube http-post

我正在尝试访问该URL到Youtube(电话没有代理设置,直接连接到互联网)

http://gdata.youtube.com/feeds/api/videos/-/music?q=gagamv&max-results=50&alt=json&v=2



我在任何PC浏览器中都可以正常运行的URL(将返回纯JSON字符串),即使我没有登录到Youtube。

但是我尝试通过Android的HttpPost访问此URL,只有我能获得的是无效的请求URI

这是我的代码:
    public static final String HEADER_TYPE="Content-Type";
    private static final String HEADER_TYPE_SET="application/text; charset=utf-8";
    public static final String HEADER_TYPE_2="Accept";
    private static final String HEADER_TYPE_SET_2="application/x-www-form-urlencoded";

    /** Socket操作逾時(3600秒) */
    public static final int TIMEOUT_SOCKET=7000;
    /** 連線逾時(3600秒) */
    public static final int TIMEOUT_CONECTION=7000;

    List<NameValuePair> params=new ArrayList<NameValuePair>();
    HttpParams httpP=null;
    DefaultHttpClient mHttpClient=null;
    UrlEncodedFormEntity entity=null;
    HttpResponse httpResp=null;
    String ret="";

    BasicHeader[] header=new BasicHeader[2];
    header[0]=new BasicHeader(HEADER_TYPE, HEADER_TYPE_SET);
    header[1]=new BasicHeader(HEADER_TYPE_2, HEADER_TYPE_SET_2);
    httpP=new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpP, TIMEOUT_CONECTION);
    HttpConnectionParams.setSoTimeout(httpP, TIMEOUT_SOCKET);
    String url=new String("http://gdata.youtube.com/feeds/api/videos/-/music?q=gagamv&max-results=50&alt=json&v=2");
    Log.d(Constants.TAG, "Youtube search URL: "+url);
    HttpPost post=new HttpPost(url);
    mHttpClient=new DefaultHttpClient(httpP);

    entity=new UrlEncodedFormEntity(params);
    post.addHeader(entity.getContentType());
    post.setEntity(entity);
    httpResp=mHttpClient.execute(post);

    String status=httpResp.getStatusLine().toString();
    ret=new String(EntityUtils.toString(httpResp.getEntity(), "UTF-8"));

我该如何解决这个问题?

最佳答案

您需要使用HTTP GET请求。问题是您正在使用HTTP Post,并且在使用get Request时url将返回数据。

尝试以下代码(我将缓冲区大小设为4096,但是您可以根据需要将其更改为动态):

        URL url = new URL("http://gdata.youtube.com/feeds/api/videos/-/music?q=gagamv&max-results=50&alt=json&v=2");
           HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
           try {
             InputStream in = new BufferedInputStream(urlConnection.getInputStream());
             byte buffer[] = new byte[4096];

             in.read(buffer);
             String str = new String(buffer);
             Log.d(TAG, " Data: " + str);

           } finally {
             urlConnection.disconnect();
           }

关于android - Android HttpPost从Youtube获取 “Invalid request URI”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520580/

相关文章:

android - xmlns : android parsing

android - 使用 HTTP post 将文件上传到服务器时出现 "Missing file"错误

php - 最近在插件中创建的 PHP 文件未运行 WordPress PHP 函数

android - ViewPager : swipe not working 内的 ScrollView

android - 位置客户端相对于 setInterval、setFastestInterval 和 setSmallestDisplacement 的优先级?

android - 清除 TextWatcher 的 beforeTextChanged() 中的 EditText 数据

javascript - 如何处理带有特定图像或文字的YouTube错误消息?

javascript - player.mute() 在 YouTube API 中无法使用播放列表

xml - 解析YouTube XML

c# - POST 请求并获取设置操作 MVC