この URL から Youtube にアクセスしようとしています (電話はプロキシ設定ではなく、インターネットに直接接続されています)。
http://gdata.youtube.com/feeds/api/videos/-/music?q=gagamv&max-results=50&alt=json&v=2
上記の URL は、YouTube にログインしていなくても、どの PC ブラウザでも正常に機能します (純粋な JSON 文字列が返されます)。
しかし、Android の HttpPost 経由でアクセスしようとしたこの URL は、私だけが取得できるのはInvalid Request 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"));
この問題を克服するにはどうすればよいですか?