Tag: httpclient

使用用户名和密码登录LinkedIn失败

LinkedIn使用oauth登录到它的api.There无法登录到服务器中的api。我试图使用http请求登录到linkedin并获取oauth_verifier ,但我得到了这样的响应 很抱歉,您的申请存在问题。 请确保您已启用Cookie,然后重试。 或者点击此链接返回主页。 我已多次分析浏览器和服务器之间的通信,但仍无法找到原因 public boolean Login(String user, String pass, String url) { try { DefaultHttpClient httpclient; HttpParams params = new BasicHttpParams(); ConnManagerParams.setMaxTotalConnections(params, 100); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); // Create and initialize scheme registry SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); schemeRegistry.register(new Scheme(“https”, SSLSocketFactory.getSocketFactory(), 443)); // Create an HttpClient with the ThreadSafeClientConnManager. // […]

Jsoup,在执行表单POST之前获取值

这是我用来提交表单的代码: Connection.Response res = Jsoup.connect(“http://example.com”) .data(“id”, “myID”) .data(“username”, “myUsername”) .data(“code”, “MyAuthcode”) // get the value of Auth code from page element .method(Method.POST).execute(); 要成功提交给定表单,[name =“code”]字段需要设置值。 该值可以在另一个元素的页面上找到 。 在如上所示实际提交表单之前,我如何使用相同的连接获取元素的值? 我需要使用元素中的值,才能成功填写表单。

如何在Netty客户端中使用Socks4 / 5代理处理程序(4.1)

我需要在Netty客户端配置socks代理(通过socks4或5个代理请求不同的站点)。 从免费袜子列表(如www.socks-proxy.net, http ://sockslist.net/等)尝试了很多代理,但没有运气: @Test public void testProxy() throws Exception { final String ua = “Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36”; final String host = “www.main.de”; final int port = 80; Bootstrap b = new Bootstrap(); b.group(new NioEventLoopGroup()) .channel(NioSocketChannel.class) .handler(new ChannelInitializer() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline […]

如何在Android中将JSON参数作为Web服务请求发送?

可能重复: 如何使用Android在Request上发送JSON对象? 由于我是Android开发的新手,我遇到了以JSON的forms向Web服务发送请求的问题。 谷歌搜索,我发现以下代码使用参数发送请求。 这是我们以下列forms发送参数的Java类: Main.java RestClient client = new RestClient(LOGIN_URL); client.AddParam(“Email”, _username); client.AddParam(“Passwd”, _password); try { client.Execute(RequestMethod.POST); } catch (Exception e) { e.printStackTrace(); } String response = client.getResponse(); 但是在这里我想以JSON的forms发送参数,例如我想以这种forms发送参数: { “login”:{ “Email”:_username, “Passwd”:_password, } } 那么,任何人都可以帮助我吗? 如何以JSON的forms发送参数?

HttpClient支持多种TLS协议

我们正在编写一个必须使用HTTPS与几台服务器通信的应用程序。 它需要与AWS(使用AWS库)以及使用TLS 1.2的一些内部服务进行通信。 我开始通过更改我的HttpClient来使用TLS 1.2 SSLContext: public static SchemeRegistry buildSchemeRegistry() throws Exception { final SSLContext sslContext = SSLContext.getInstance(“TLSv1.2”); sslContext.init(createKeyManager(), createTrustManager(), new SecureRandom()); final SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme(“https”, 443, new SSLSocketFactory(sslContext))); return schemeRegistry; } 并将此SchemeRegistry注入到DefaultHttpClient对象中(通过spring),但这样做我从AWS得到错误,因此我假设(我可能错了)AWS不支持TLS 1.2(如果我只是,我不会收到此消息使用正常的DefaultHttpClient): AmazonServiceException: Status Code: 403, AWS Service: AmazonSimpleDB, AWS Request ID: 5d91d65f-7158-91b6-431d-56e1c76a844c, AWS Error Code: InvalidClientTokenId, AWS Error […]

如何确保我的HttpClient 4.1不会泄漏套接字?

我的服务器使用来自内部Web服务的数据来构建其响应,基于每个请求。 我正在使用Apache HttpClient 4.1来发出请求。 每个初始请求将导致对Web服务的大约30个请求。 其中,4 – 8最终将插入CLOSE_WAIT中的套接字,而这些套接字永远不会被释放。 最终这些卡住的套接字超过了我的ulimit,我的进程耗尽了文件描述符。 我不想只提高我的ulimit(1024),因为这只会掩盖问题。 我转移到HttpClient的原因是java.net.HttpUrlConnection的行为方式相同。 我已尝试按请求移动到SingleClientConnManager,并在其上调用client.getConnectionManager()。shutdown(),但套接字仍然卡住了。 我是否应该尝试解决这个问题,以便在没有正在运行的请求时最终得到0个开放套接字,或者我应该专注于请求持久性和池化? 为清楚起见,我提供了一些可能相关的细节: 操作系统:Ubuntu 10.10 JRE:1.6.0_22 语言:Scala 2.8 示例代码: val cleaner = Executors.newScheduledThreadPool(1) private val client = { val ssl_ctx = SSLContext.getInstance(“TLS”) val managers = Array[TrustManager](TrustingTrustManager) ssl_ctx.init(null, managers, new java.security.SecureRandom()) val sslSf = new org.apache.http.conn.ssl.SSLSocketFactory(ssl_ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) val schemeRegistry = new SchemeRegistry() schemeRegistry.register(new Scheme(“https”, 443, […]

HttpClient ThreadSafeClientConnManager抛出“连接重置”

我以两种不同的方式定义HttpClient:1。Plain vanilla:client = new DefaultHttpClient(); 2.线程安全: DefaultHttpClient getThreadSafeHttpClient() { HttpParams params = new BasicHttpParams(); params .setParameter( “http.useragent”, “Mozilla/5.0 (Linux; U; Android 1.1; en-us;dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2”); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, “UTF-8”); final SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme(“http”, PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme(“https”, PlainSocketFactory.getSocketFactory(), 443)); final ThreadSafeClientConnManager manager = new ThreadSafeClientConnManager(params, registry); […]

管理身份validation令牌的最佳做法

我正在使用HttpCLient在Java中编写REST客户端,我访问的REST API需要每个REST操作的身份validation令牌。 此令牌有效期为24小时。 我现在处理这个问题的方法是每当我需要进行REST调用时调用“ getAuth() ”方法,这似乎是auth服务器上的开销。 如何方便地存储此身份validation令牌并管理其生命周期? 是否有任何记录的最佳实践? 我想到了以下解决方案 public class MySession { String user; String pass; public MySession(String user, String pass) { this.user = user; this.pass = pass; } public getAuth() { //user user, pass to get auth token } } 然后将sessions对象传递给任何需要该令牌的类。 如果令牌已过期,请再次调用此方法

使用HTTPClient或HttpUrlConnection?

我们正在JRE 1.4上实现REST客户端。 似乎客户端REST框架的两个好选择是HttpClient和HttpUrlConnection 。 是否有理由在JRE的HttpUrlConnection上使用HttpClient?

如何通过HTTP代理连接Socket服务器

我有一段代码连接到Socket服务器,它工作正常。 Socket socket = new Socket(); socket.connect(new InetSocketAddress(address, port)); 现在我想通过HTTP代理连接,我该怎么办? 我试过这个并且失败了 SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort); Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); Socket socket = new Socket(proxy); socket.connect(new InetSocketAddress(address, port)); 这篇文章建议我应该使用Jakarta Commons HttpClient ,但如何使用它通过HTTP代理连接Socket服务器? 更新:我使用SOCKS代理,如果我使用HTTP代理它不起作用: SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort); Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); Socket socket = new Socket(proxy); socket.connect(new InetSocketAddress(address, […]