Я решил проблему.
Я использовал wireshark, чтобы исследовать то, что было отправлено через провод.
Мой URL содержал пробел, и это вызывало все проблемы.
Как я уже говорил, я хотел связаться с поиском Google, и мой URL выглядел примерно так:
http://www.google.com/search?q=golden handpressure&ie=8758438&cx=hjfweufhweufwef:9e
это работает в адресной строке браузера, но не в Java.
С помощью wireshark я обнаружил, что заголовок моего запроса содержал:
Request URI: http://www.google.com/search?q=golden
Request version: handpressure&ie=8758438&cx=hjfweufhweufwef:9e
Это, конечно, не правильно. все это должно быть одно поле с именем «Request URI».
Изменение пробела на «% 20» решило проблему.