Tag: 代理

代理使用Java URLConnection类

我是Java的新手。 我正在使用以下代码来调用REST API,它在简单的环境中工作正常,但是当我使用代理环境时抛出NullPointerException 。 我在google上找到了我们必须为其设置代理设置的结果。 我根据http://www.javaworld.com/javaworld/javatips/jw-javatip42.html文章设置代理,但这不起作用+ base64Encode(密码)创建语法错误。 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(); 请帮我设置代理主机,端口,用户名和密码。

Java检测类是否是代理

是否可以检测类是否是代理 ( 动态 , cglib或其他 )? 让类A和B实现公共接口I 然后我需要定义一个例程的classEquals签名 public boolean classEquals(Class a, Class b); 这样,只有当a.equals(b)或Proxy(a).equals(b) ,它才会计算为true ,其中Proxy(a)表示类型A的动态代理(动态,cglib或其他)。 在@Jigar Joshi的帮助下,这是迄今为止的样子: public boolean classEquals(Class a, Class b) { if (Proxy.isProxyClass(a)) { return classEquals(a.getSuperclass(), b); } return a.equals(b); } 问题是它没有检测到例如CGLIB代理。

尝试使用java代理获取对象的大小时“无法加载Premain-Class清单属性”

当我尝试运行java程序( java -javaagent:size.jar ObjectSizeTest )时,我收到以下错误: Failed to load Premain-Class manifest attribute from D:\workspace\ObjectSizeTest\size.jar Error occurred during initialization of VM agent library failed to init: instrument 这是ObjectSizeTest的代码: public class ObjectSizeTest { public static void main(String[] args) { String s = new String(“sai”); System.out.println(ObjectSizeFetcher.getObjectSize(s)); } } MANIFEST.MF(适用于size.jar): Manifest-Version: 1.0 Created-By: 1.5.0_18 (Sun Microsystems Inc.) Premain-Class: ObjectSizeFetcher 这是ObjectSizeFetcher的代码: […]

okhttp客户端在TMG代理服务器下抛出exception

我正在为我的java应用程序使用github的方形OKHTTP客户端库,如下所示: import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import com.squareup.okhttp.Authenticator; import com.squareup.okhttp.Credentials; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; public class TestOkHttp { static public void main(String argcp[]){ try { OkHttpClient okHttpClient = new OkHttpClient(); TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() […]

如何通过代理设置libGDX项目

我正在使用libgdx项目创建者( gdx-setup.jar )来设置一个新项目。 但是,我在我的Windows机器上使用代理连接来访问互联网,而gdx-setup.jar无法检测设置,因此我无法下载所需的jar文件并生成任何项目。 如何以及在何处更改java代理设置以便我能够实现此目的? PS:我已经尝试编辑控制面板 – > Java->网络设置下的设置,但无济于事。

在Java中通过代理发送SOAP消息

我需要知道如何设置代理并确认它是否正常工作。 我做了一个看起来像这样的测试程序: 您可以在哪里指定代理地址和端口号。 (我找到了地址和端口: http : //www.freeproxylists.net/ ) 当选中“使用代理”时,SOAP调用看起来像这样: Socket socket = new Socket(); SocketAddress sockaddr = new InetSocketAddress(PROXY_ADDRESS, PROXY_PORT); socket.connect(sockaddr, 10000); Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(socket.getInetAddress(), PROXY_PORT)); URL url = new URL(urlStr); HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy); return connection.call(message, uc); 这里的问题是最后一行SOAPConnection.call(..)不允许HttpURLConnection作为输入,从而给出: 错误的endPoint类型 知道如何将代理地址添加到SOAP调用并validation代理是否正在使用? import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.HttpURLConnection; import […]

Java代理身份validation

我有一个在Tomcat 6中运行的Java webapp,它从远程URL加载RSS提要。 我使用罗马为我处理RSS源和不同的格式。 连接部分看起来像这样: try{ feedSource = new URL(rssObject.getAsset()); }catch(MalformedURLException mue){ logger.error(…); throw mue; } try{ URLConnection connection = feedSource.openConnection(); feed = new SyndFeedInput().build(new XmlReader(connection)); }catch(Exception){handle…} 代码工作正常,除了在这个新客户端,他们使用代理。 为了使用代理,我设置了http.proxyHost和proxyPort系统属性: System.setProperty(“http.proxyHost”, proxyHost); System.setProperty(“http.proxyPort”, proxyPort); System.setProperty(“https.proxyHost”, proxyHost); System.setProperty(“https.proxyPort”, proxyPort); HTTP GET是代理好的,但现在我收到HTTP 502错误(坏网关或类似的东西)。 分析与Wireshark的HTTP交换,我注意到代理需要身份validation。 它发送HTTP 507. Java以某种方式尝试进行身份validation,但它使用了错误的用户名和密码。 它似乎使用主机名作为用户名,对于我不知道的密码。 所以我尝试实现Authenticator方法来指定用户名+密码: Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { logger.info(MessageFormat.format(“Generating […]

从调用返回另一个代理的Java.lang.reflect.Proxy在赋值时导致ClassCastException

所以我正在玩geotools,我想我会代理他们的一个数据访问类,并跟踪它们在代码中的使用方式。 我编写了一个动态代理并在其中包含了一个FeatureSource(接口),然后快乐地完成了它。 然后我想看一下featureSource返回的一些传递对象,因为FeatureSource做的主要事情是返回一个FeatureCollection(FeatureSource类似于sql DataSource和featurecollection到sql语句)。 在我的invocationhandler中,我只是将调用传递给底层对象,打印出目标类/方法/ args并导致结果,但是对于返回FeatureCollection(另一个接口)的调用,我将该对象包装在我的代理中(相同的类,但一个新的实例,应该不重要吗?)并返回它。 BAM! Classcastexception: java.lang.ClassCastException: $Proxy5 cannot be cast to org.geotools.feature.FeatureCollection at $Proxy4.getFeatures(Unknown Source) at MyClass.myTestMethod(MyClass.java:295) 调用代码: FeatureSource featureSource = … // create the FS featureSource = (FeatureSource) FeatureSourceProxy.newInstance(featureSource, features); featureSource.getBounds();// ok featureSource.getSupportedHints();// ok DefaultQuery query1 = new DefaultQuery(DefaultQuery.ALL); FeatureCollection results = featureSource.getFeatures(query1); //<- explosion here 代理人: public class FeatureSourceProxy implements […]

是否有可能在Jersey中访问注入的HttpServletRequest,而不是代理

在Jersey / JAX-RS资源中注入HttpServletRequest时,注入的值是代理。 例如: @Path(“/myResource”) class MyResource { @Inject HttpServletRequest request; … } 将为请求的HttpServletRequest注入一个Proxy对象。 我需要访问实际的HttpServletRequest实例对象,因为我想使用一些不在代理HttpServletRequest接口中的容器特定function。 在jersey中有没有办法通过注射进入实际物体? 我知道在旧版本的Jersey中你可以注入ThreadLocal来实现这一点。 但这似乎不再支持jersey2.15了。 基本原理:我的代码依赖于实现HttpRequest org.eclipse.jetty.server.Request中的function,并添加了HTTP / 2推送的function。 我想用Jersey / JAX-RS。

java运行时6与socks v5代理 – 可能吗?

我编写了一个应用程序(除此之外)在Windows中运行本地服务,充当Firefox的SOCKS v5代理。 我现在正处于调试阶段,发现某些网站无法正常运行。 例如,Facebook.com上的图片上传Java Applet失败,因为无法查找域。 我的应用程序覆盖隐藏的FF配置设置network.proxy.socks__remote__dns将其设置为true 。 该应用程序的整个目的是允许在防火墙后面访问网站(例如,如果用户在中国),因此此设置对于确保远程解析域(而不仅仅是HTTP请求)至关重要。 在JRE6设置( 此处记录 )中没有相应的设置,因为远程DNS解析是SOCKS v5的一个function而不是v4,因为文档似乎意味着我担心它是不可能的。 如何以编程方式确保JRE对所有请求(包括DNS)使用SOCKS v5代理? 更新:重现此问题的步骤: 确保您位于阻止(或重定向)Internet访问( 包括DNS )的防火墙后面 安装PuTTY并在您选择的某个端口号上添加动态SSH隧道(例如9870)。 然后登录到可以完全访问Internet的远程服务器 启动Firefox,您将无法浏览网页 在FF网络设置中,将SOCKS v5代理设置为localhost:9870 在FF中转到about:config,将network.proxy.socks__remote__dns更改为true 您现在可以浏览网页了。 转到facebook.com,登录,转到您的个人资料并尝试使用图片上传器java applet添加一些图片 它会因一系列类未找到的错误而失败,类似于: load:未找到类com.facebook.facebookphotouploader5.FacebookPhotoUploader5.class 。 我相信这是失败的,因为JRE无法解析该类所在的域。 我基于这样的信念,即文档( http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/properties.html )仅讨论SOCKS v4(其中据我所知,不支持远程DNS)。 我的deployment.properties文件位于%APPDATA%\ Sun \ Java \ Deployment中。 我可以确认我在Java控制面板中进行的修改会写入该文件。 如果不是“使用浏览器设置”而是Java的网络设置覆盖并尝试手动使用SOCKS代理设置,我仍然遇到问题。 似乎没有一种简单的方法可以强制JRE通过代理远程执行DNS。 更新2: 没有SOCKS代理,来自我的本地客户端 www.facebook.com解析为203.161.230.171 upload.facebook.com解析为64.33.88.161 两个主机都不可访问(因为防火墙) 如果我登录到远程服务器,我会得到: www.facebook.com 69.63.187.17 upload.facebook.com 69.63.178.32 几分钟后这两个IP都会发生变化,因为看起来Facebook使用循环DNS和其他负载平衡。 […]