- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的目标:
到目前为止:
private String sessionId = "";
....
private int loginToServer() throws IOException
{
int result = 0;
String httpsURL = "http://192.168.1.100:8080/foo/login.jsp";
HttpResponse response;
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpClientContext httpContext = HttpClientContext.create();
try
{
HttpPost httpPost = new HttpPost(httpsURL);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "*****"));
nvps.add(new BasicNameValuePair("password", "*****"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
response = httpclient.execute(httpPost,httpContext);
//store cookies
CookieStore cookieStore = new BasicCookieStore();
cookieStore = httpContext.getCookieStore();
List<Cookie> cookies = cookieStore.getCookies();
if(cookies != null)
{
for(Cookie cookie : cookies)
{
sessionId = cookie.getValue();
}
}
result = response.getStatusLine().getStatusCode();
System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
EntityUtils.consume(entity);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
-我得到 HTTP/1.1 200 OK:
<小时/>POST /mysubdir/login.jsp HTTP/1.1
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Host: 192.168.2.100:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.4.1 (Java/1.8.0_25)
Accept-Encoding: gzip,deflate
username=******&password=******HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=97D93F7C7E11F22A6E895554E761D3AE; Path=/foo/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Thu, 04 Jun 2015 13:21:18 GMT
2000
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hoarder Login</title>
<link rel="icon" href="resource/favicon.ico"></link>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
<style type='text/css'>
html, body {
.margin: 0;
.padding: 0;
.overflow: hidden;
}
.....
private InputStream sendGet(String url) {
System.out.println("\nSending 'GET' request to URL : " + url);
HttpGet httpGet = new HttpGet(url);
HttpResponse response = null;
InputStream is = null;
try
{
//Setting up cookie store
CookieStore cookiestr = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", sessionId);
cookie.setDomain("192.168.1.100");
cookie.setPath("/foo/");
cookie.setAttribute(ClientCookie.PATH_ATTR, "/foo/");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "192.168.1.100");
CookieStore cookiestr = httpContext.getCookieStore();
cookiestr.addCookie(cookie);
httpContext.setCookieStore(cookiestr);
CloseableHttpClient httpclient = HttpClients.custom().setDefaultCookieStore(cookiestr).build();
httpclient = HttpClients.createDefault();
response = httpclient.execute(httpGet);
is = response.getEntity().getContent();
System.out.println("Response Code : " + response.getStatusLine());
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return is;
}
GET /foo/images/B0DF3A14706A-008-0008/7.jpg HTTP/1.1
Host: 192.168.1.100:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.4.1 (Java/1.8.0_25)
Cookie: JSESSIONID=97D93F7C7E11F22A6E895554E761D3AE
Accept-Encoding: gzip,deflate
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Wed, 31 Dec 1969 19:00:00 EST
Set-Cookie: JSESSIONID=D94C9147870EE8A7DEEDB67AD77B695E; Path=/foo/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Wed, 03 Jun 2015 18:28:02 GMT
2000
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hoarder Login</title>
<link rel="icon" href="resource/favicon.ico"></link>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
<style type='text/css'>
html, body {
.margin: 0;
.padding: 0;
.overflow: hidden;
}
......
为什么我会得到这个?我什至可以看到我发送的请求是针对与登录相同的 session 的。有人遇到过这个问题吗?有人想出解决方案吗?
谢谢。
最佳答案
我也有过类似的经历。该 cookie 可能被 HttpClient 拒绝。我用这段代码解决了这个问题:
...
CookieSpecProvider easySpecProvider = new CookieSpecProvider() {
public CookieSpec create(HttpContext context) {
return new BrowserCompatSpec() {
@Override
public void validate(Cookie cookie, CookieOrigin origin)
throws MalformedCookieException {
// Oh, I am easy
}
};
}
};
registry = RegistryBuilder.<CookieSpecProvider>create()
.register("easy", easySpecProvider)
.build();
closableClient = httpclient.setDefaultCookieSpecRegistry(registry).setDefaultRequestConfig(httpRequestBase.getConfig()).build();
response = closableClient.execute(httpRequestBase, context);
...
关于Java HttpClient : I keep getting login page back when I request a different webpage even after I had already logged in successfully,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30648734/
我的应用程序有一个在客户端运行的 websocket 客户端,我正在使用 websocket 上传文件。 我有一个 wicket 网页,它有两种上传 USB 文件的方法(自动和输入类型文件)当我的页面
当我们尝试在 sitecore 7.1 应用程序中浏览图像时,出现以下错误,该错误已从 6.2 迁移到 7.1。 Type 'ASP._Page_sitecore_shell_client_Speak
在从 6.2 迁移到 7.1 的 Sitecore 7.1 中打开图像时,出现以下错误: Type 'ASP._Page_sitecore_shell_client_Speak_Layouts_Lay
我得到: Type 'ASP._Page_index_cshtml' does not inherit from 'System.Web.WebPages.WebPage'. 当我浏览到我的index
我在配置 asp.net mvc 应用程序时遇到问题: [HttpException (0x80004005): Type 'ASP._Page_Currency_Index_cshtml' does
我遵循了非常相似的帖子提供的答案,您将在下面列出的逐步步骤中看到。 Razor view Type does not inherit from 'System.Web.WebPages.WebPage
这个问题在这里已经有了答案: [A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to... web.conf
我正在我的 Android 应用程序上集成 payumoney 支付网关。但是当我尝试通过测试借记卡进行测试交易时。它显示一个错误。当我联系 payumoney 客户服务时,他们说将服务器的 URL
我有一个网页,每 5 秒左右通过从服务器获取数据在 AJAX 中 self 更新。但是,我想只在用户主动查看页面时执行更新。 当用户在另一个选项卡上,在浏览器以外的另一个程序中,或者页面不是用户 PC
Google 是如何制作每天替换 Google Logo 的小动画的? 我知道去年全世界在工作中玩吃 bean 人时损失了将近 500 万小时(但这是值得的 :D)。但是这些互动小游戏还是让我印象深刻
我的本地主机上有一个 HTML 文件,我想要整个页面的屏幕截图。有谁知道一些截取整个页面(本地主机)的软件?我找到了一些插件,但它们不支持本地主机文件。 最佳答案 在 Windows 上按“Prt
我正在使用 PhantomJS 1.8.2 通过 JsTestDriver 运行一些 Jasmine 单元测试。使用 Chrome 测试运行良好,但使用 PhantomJS 时大约有一半的时间,测试结
我的本地主机上有一个 HTML 文件,我想要整个页面的屏幕截图。有谁知道一些截取整个页面(本地主机)的软件?我找到了一些插件,但它们不支持本地主机文件。 最佳答案 在 Windows 上按“Prt
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface;
我需要点击一个链接,它实际上是 html 文件中的一个图像(左上角的 UCR 标志),我应该怎么做? 我有以下代码: url % follow_link("") 标志的html代码是:
为什么会这样? public class MainActivity extends Activity { WebView browser; @Override publ
我的来源: public class MainActivity extends DroidGap { @Override public void onCreate(Bu
我在godaddy购买了一个域名(www.domainname.com)。 我有一个 tomcat 服务器在路径 http://174.xxx.x.xx/WebApp1/webhome 部署了工作应用
我正在尝试完成一些可能相对简单的事情,但我不知道我会怎么调用它(如果有特定的名称),因此我的搜索被证明是无用的。 我想要完成的很简单:我有一个基于 Masonry jquery 插件(类似于 http
是否有任何自动化工具可以在网站上找到损坏的内部链接——特别是针对基于 DNN 框架的网站。 (DotNetNuke)。 我们查看了 Xenu,但看不到登录页面。 任何建议 干杯。 最佳答案 我已经在博
我是一名优秀的程序员,十分优秀!