これはApacheログで確認できます。基本的に、リクエストはを使用してAndroidエミュレータから送信されHTTPUrlConnection
ます。これが私のコードです。
URL url = new URL(strUrl);
Log.d(params[0],"UR");
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", "Basic " + Base64.encodeToString(toencode, Base64.DEFAULT));
conn.setRequestProperty("Host", "www.domain.com");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.3.1)");
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestMethod("GET");
conn.setConnectTimeout (30000) ;
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();
String data = conn.getInputStream().toString();
return data;
サーバーが認識できないユーザーエージェントをフィルタリングしていないことを確認するために、user-agentヘッダーを送信しています。Wiresharkを使用してトラフィックをキャプチャしました。リクエストは大丈夫のようです。他に何を探すべきかわからない。運がなくてこれに何時間も費やしている。
GET Authenticate/ HTTP/1.1\r\n
Host: www.domain.com\r\n
User-Agent: Mozilla/5.0 (Macintosh; U; PPC; en-US; rv:1.3.1)\r\n
Accept-Charset: UTF-8\r\n
Connection: Keep-Alive\r\n
Accept-Encoding: gzip\r\n
\r\n
サーバーからの応答:
Request Version: HTTP/1.1
Status Code: 400
Response Phrase: Bad Request
<h1>Bad Request</h1>\n
<p>Your browser sent a request that this server could not understand.<br />\n
およびapacheログ:
client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23)
この時点で、HttpClientに戻って試してみる必要があると感じています。HttpUrlConnection
グーグルが勧めているので使うべきだと思いました。しかし、私は運がありませんHttpURLConnection
。
誰かが何か考えを持っていますか?