2011-11-25 61 views
5

我对Java很新。我使用以下代码调用REST API,它在简单环境中工作正常,但是当我使用代理环境时,它抛出了NullPointerException。我在google上找到了我们必须为其设置代理设置的结果。我根据http://www.javaworld.com/javaworld/javatips/jw-javatip42.html文章设置代理,但这不起作用+ base64编码(密码)创建语法错误。代理与Java URLConnection类

URL url = new URL("http://examplerestapi/get/user"); 
URLConnection yc = url.openConnection(); 



in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
String inputLine; 

while ((inputLine = in.readLine()) != null) { 
     sb.append(inputLine); 
} 

String res = sb.toString(); 

请帮我设置代理主机,端口,用户名和密码。

回答

18

我怀疑你的NullPointerException正在发生,因为yc.getInputStream()正在返回null。在尝试创建读取器来读取字节之前,您需要检查它是否返回了一些非空值。

至于代理问题,你可以通过一个Proxy对象的连接,例如:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("my.proxy.example.com", 3128)); 
URLConnection yc = url.openConnection(proxy); 

这至少可能让你询问代理服务器和排除潜在来源的问题(有几个,因为它)。

This thread可能会让您的代理用户名和密码字符串正常工作。您链接的文章看起来略显过时。

+0

感谢它现在的工作很好。 –

+0

用户名和密码怎么样? –

+0

@Gian,上面的代码将设置jvm作用域上的代理配置,如system.setProperty? –