Wednesday, 15 September 2010

java - commons io 403 for URL but httpclient is ok -



java - commons io 403 for URL but httpclient is ok -

commons io code :

string resulturl = string.format(google_recognizer_url, urlencoder.encode("hello", "utf-8"), "en-us"); uri uri = new uri(resulturl); byte[] resultio = ioutils.tobytearray(uri);

i got exception:

exception in thread "main" java.io.ioexception: server returned http response code: 403 url: http://translate.google.cn/translate_tts?ie=utf-8&q=hello&tl=en-us&total=1&idx=0&textlen=3 @ sun.net.www.protocol.http.httpurlconnection.getinputstream(httpurlconnection.java:1436) @ org.apache.commons.io.ioutils.tobytearray(ioutils.java:654) @ org.apache.commons.io.ioutils.tobytearray(ioutils.java:635) @ org.apache.commons.io.ioutils.tobytearray(ioutils.java:617) @ com.renren.intl.soundsns.simsimi.speech.ttsclient.impl.googlettsclient.main(googlettsclient.java:70)

but when utilize httpclient, result ok.

string resulturl = string.format(google_recognizer_url, urlencoder.encode(text, "utf-8"), "en-us"); httpclient client = new httpclient(); getmethod g = new getmethod(resulturl); client.executemethod(g); byte[] resultbyte = g.getresponsebody();

how happened?

thanks in advance :)

maven dependencies:

<dependency> <groupid>commons-io</groupid> <artifactid>commons-io</artifactid> <version>2.4</version> </dependency> <dependency> <groupid>commons-httpclient</groupid> <artifactid>commons-httpclient</artifactid> <version>3.1</version> </dependency>

jon skeet right!

for me in case of java.net.url jvm pass next headers:

user-agent: java/1.7.0_10 host: translate.google.cn accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 connection: keep-alive

in case of apache httpclient:

user-agent: djakarta commons-httpclient/3.1 host: translate.google.cn

and if change, user agent java.net.url:

system.setproperty("http.agent", "jakarta commons-httpclient/3.1");

request successful, without http 403.

looks 403 error if user-agent start with: java. user agent pattern java.* throws 403 error. if utilize pattern .+java.* ok.

java http httpclient http-status-code-403 apache-commons-io

No comments:

Post a Comment