登录浏览器游戏时,我会在Headers后面使用Chrome开发者工具嗅探:
Request URL:https://bild.anmeldung.axelspringer.de/sso2/web/login?service=https://supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do
Request Method:POST
Status Code:302 Moved Temporarily
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:79
Content-Type:application/x-www-form-urlencoded
Cookie:JSESSIONID=0B4CFB76ADE52AA77F78A1ADB82C8A77;
BIGipServeras_sso2_auth_http=2206210988.20480.0000
Host:bild.anmeldung.axelspringer.de
Origin:https://bild.anmeldung.axelspringer.de
Referer:https://bild.anmeldung.axelspringer.de/sso2/web/login?service=https://supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1
Query String Parameters
service:https://supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do
Form Dataview
username:xxxxx@gmail.com
password:xxxxx
_eventId_submit:Login
lt:e2s1
因此,我尝试使用以下JAVA程序模拟此HTTP POST:
package org.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
public class Main {
public static void main(String[] args) throws ClientProtocolException, IOException {
String target = "https://bild.anmeldung.axelspringer.de/sso2/web/login?service=https://supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do";
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(target);
BasicNameValuePair[] params = { new BasicNameValuePair("username", "xxxx@gmail.com"),
new BasicNameValuePair("password", "xxxxx"), new BasicNameValuePair("_eventId_submit", "Login"),
new BasicNameValuePair("lt", "e1s1") };
httpPost.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httpPost.setHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
httpPost.setHeader("Accept-Encoding", "gzip,deflate,sdch");
httpPost.setHeader("Accept-Language:", "de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4");
httpPost.setHeader("Cache-Control", "max-age=0");
httpPost.setHeader("Connection", "keep-alive");
httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
httpPost.setHeader("Host", "bild.anmeldung.axelspringer.de");
httpPost.setHeader("Origin", "https://bild.anmeldung.axelspringer.de");
httpPost.setHeader(
"Referer",
"https://bild.anmeldung.axelspringer.de/sso2/web/login?service=https://supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do");
httpPost.setHeader("User-Agent",
"ozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1");
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(Arrays.asList(params));
urlEncodedFormEntity.setContentEncoding(HTTP.UTF_8);
httpPost.setEntity(urlEncodedFormEntity);
HttpResponse response = client.execute(httpPost);
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(response.getHeaders("Location")[0].getValue());
InputStream input = response.getEntity().getContent();
InputStreamReader isr = new InputStreamReader(input);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.printf("\n%s", line);
}
System.out.println("test");
client.getConnectionManager().shutdown();
}
}
(我不知道为什么语法高亮不起作用)
成功登录后Chrome Developer Tools的响应标题如下所示:
缓存控制:无存储缓存控制:无缓存连接:关闭
Content-Length:0 Content-Type:text / plain; charset = UTF-8日期:星期五,31 2012年8月13:36:41 GMT到期日:1970年1月1日星期四00:00:00 GMT
位置:HTTPS:?//supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do票= ST-269xxx14-XXXXXXXXXXX-SSO-登入服务器
P3P:CP =“ALL ALL CUR ADM DEV COM CONI选择我们的LEG ONL PUR DSP”
Pragma:no-cache服务器:Apache Set-Cookie:CASPRIVACY =“”;过期=星期四, 1970年1月1日00:00:00 GMT;路径= / SSO2;仅Http
设置Cookie:BILD_CASTGC = TGT-16889-hdlIRDDFzuXccyoEVZfYKYHuJySuM4XCrrNLDMnkfwGEgCTBfp-SSO-登入服务器;路径= / SSO2;安全;仅Http
Java Programm应该从响应Header返回“Location”参数,但它不起作用。这里有什么不对?我忘了什么吗?
我的Java程序的输出是这样的:
302
https://bild.anmeldung.axelspringer.de/sso2/web/login;jsessionid=E9B2XXXXXXXXCE62B0FB5A2F06175BB9?service=https://supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do
test
返回值“302”正确但Location参数错误。我需要此Location参数值来获取“Ticket”值:
位置:HTTPS:?//supermanager.bild.de/CleverTV/de/bild/fantasy/22/bildSSOlanding.do票= ST-269xxx14-XXXXXXXXXXX-SSO-登入服务器
此致 桑德罗