gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:01:36 25 4
gpt4 key购买 nike

我正在尝试访问该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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com