2

クエリ文字列を追加するときに uri に接続する際に問題が発生しました...常に 400 の http コードが返されます...しかし、同じ URL のブラウザーを試してみると、すべてがスムーズに進みます...

これは私が持っているものです:

String query = "q=hello";
byte[] queryBytes = query.getBytes();

コードのどこかで、次のように queryBytes を使用して HttpConnection を開きます。

String uri = "https://www.google.co.ve/search" + "?" + new String(queryBytes);
HttpConnection request = (HttpConnection) Connector.open(uri);
request.getResponseCode();

接続にバイトを使用しない場合、すべてが正常に機能します。

String uri = "https://www.google.co.ve/search?q=hello";

前もって感謝します

4

1 に答える 1

2

これを試してみると、http コード 200 が表示されます。

try {
    String httpURL = "https://www.google.co.ve/search?q=hello";
    HttpConnection httpConn;
    httpConn = (HttpConnection) Connector.open(httpURL);
    httpConn.setRequestMethod(HttpConnection.GET);
    DataOutputStream _outStream = new DataOutputStream(httpConn.openDataOutputStream());
    byte[] request_body = httpURL.getBytes();
    for (int i = 0; i < request_body.length; i++) {
        _outStream.writeByte(request_body[i]);
    }
    DataInputStream _inputStream = new DataInputStream(
    httpConn.openInputStream());
    StringBuffer _responseMessage = new StringBuffer();
    int ch;
    while ((ch = _inputStream.read()) != -1) {
        _responseMessage.append((char) ch);
    }
    String res = (_responseMessage.toString());
    String responce = res.trim();
    httpConn.close();

    Dialog.alert(responce);

} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
于 2013-03-06T13:44:50.570 に答える