① java怎么模拟登录亚马逊中国网站
Connection.Response res = Jsoup.connect(“登陆地址”).data("username", "你的用户名", "password", "你的密码").timeout(3000).method(Method.POST).execute();
Document doc = res.parse();
doc是拿到的网页后台的代码,再正则表达式匹配或者jsoup提取,分析得到cookie,即可模拟登陆
② JAVA超简单的模拟登陆
public static void main(String[] args){
int i=0;
for(;i<3;i++){
Scanner scan=new Scanner(System.in);
System.out.println("请输入用户名:");
String Cuser=scan.nextLine();
System.out.println("请输入密码:");
String Cpwd=scan.nextLine();
if(!Cuser.equals("abc")){
if(i+1==3)
System.out.println("失败3次");
else
System.out.println("用户名非法!【第"+(i+1)+"次登录】");
}
else if(!Cpwd.equals("abc")){
if(i+1==3)
System.out.println("失败3次");
else
System.out.println("登录密码错误!【第"+(i+1)+"次登录】");
}
else
{
System.out.println("恭喜您,登录信息通过验证!");
}
}
}
③ 怎样用android模拟器访问本机上的JAVAWEB项目该怎么处理
请教各位大神详细指导
现在做了一个J2EE的仿照新浪微博的WEB项目
想继续用android模拟器做一个手机客户端,可以实现简单的登录,浏览,发表微博功能
------解决方案--------------------------------------------------------
你既然已经做了一个j2EE版的,那就是说,你的服务器已经有了,一般客户端和服务器进行通信进行数据的传递,可以通过文件数据流的形式,你可以将你要传递的信息拼装成一个xml文件,客户端难服务器发送请求时也是发送一个数据流(xml),在服务器接受后,进行解析,获取信息进行相应的操作,客户端与服务器之间的信息的传递可以通过流的的形式,关键是你要定义实现每一个功能的接口相当余你自己定义通信的规则
------解决方案--------------------------------------------------------
向java项目服务器发请求,只要上线了,就能访问,向连接,超链接都可以的------解决方案--------------------------------------------------------可参考:
④ 用java模拟登陆教务处,用的是httpclient4,出现重定向问题怎么解决
httpclient如果是用get方法提交 会自动转向重定向的页面的。POST方法则要手动转向。
试下能不能get方法登录,如果可以用get方法登录 ,登录后会自动重定向到新的页面。如果不能用GET 登录,就只能POST后从响应中读取头的location 然后再用GET方法打开location返回的网址就行了。
⑤ java初级 (结合多线程)模拟多个用户访问xx网盘的功能,实现如下功能:
我刚写完xxx网盘爬虫引擎(给自己写的),你要是知道Executorservice,HttpClient,递归,断点续传,我可以给你发源码,否则还是算了吧
⑥ java模拟post 出现“可能访问过于频繁或非正常访问”
应该是有限制,把你的post请求,加上浏览器代理信息等,尽量看起来更像一个浏览器发起的正常请求。
⑦ 如何用java模拟网页登入提交
我不得不使用好几个系统,都是B/S结构的,每次登录都需要输入用户名和密码,觉得非常麻烦,考虑到其他同事也会有这样的需求,不妨就写个自动登录的程序吧。之前,也考虑过使用单点登录,几经尝试之后还是放弃了。
我习惯使用Java,本能地开始寻找Java的解决方法,在Google中输入“Java自动登录”、“Java网页模拟登录”、“Java Post 登录”,结果倒是不少,内容也差不多,我尝试很多次终究也没有达到我预期的目标。后来,我都不知道这些代码应该在jsp页面中执行还是在c/s结构的程序中执行。但这些代码确实管用。
我们先分析一下代码,
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
String surl = "http://192.168.0.1:8888/oa/login.jsp";
URL url = new URL(surl);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter out=new OutputStreamWriter(conn.getOutputStream());
String str = "username=yourname&password=123456";
out.write(str);
out.flush();
out.close();
到这里,如果在C/S结构中,且参数正确,程序能够成功登录到这个oa系统,要看到结果,你可以通过下面的代码将系统服务器返回的结果System.out.println()出来。
String sling = "";
String scontent = "";
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
while ((sling = in.readLine()) != null)
scontent += in + "\r\n";
System.out.println(scontent);
在C/S结构下,可以到得到控制台输出了返回值,从返回内容里可以看出程序已经成功登录,但要是把这个网址浏览器打开,还是得重新登录,问题没有得到根本解决。如果只是恶意注册,到这里应该就达到目的了。
看样子C/S结构下不容易实现网页程序自动登录,除非你在C/S程序中内嵌一个浏览器,直接在这个浏览器中自动访问系统,应该没有别的方法,主要问题在于我们没有办法共享Session。
为了便于共享Session,我们只能在浏览器中实现网页自动登录,通过上面的代码在jsp页面中测试,达不到预期目标。
网页自动登录,就是希望程序自动填充用户名和密码,然后以Post方式提交给登录页面的Form所指向的action页面或方法。我将系统的登录页面的源代码保存成一个网页,然后在username和password文本框中设置默认值,然后通过这网页登录系统,测试后,发现可行。接下来,你可能已经想到了解决方法。
我们可以通过url.openConnection()建立连接,将返回的scontent打印出来,然后接着打印以下代码:
out.println("<script type="text/javascript">\r\n");
out.println("document.getElementsByName("username")[0].value=yourname;\r\n");
out.println("document.getElementsByName("password")[0].value=123456;\r\n");
out.println("document.forms[0].submit();\r\n");
out.println("</script>\r\n");
原理很简单,通过login.jsp将登录页面的全部源代码写在当前页面,然后使用javascript脚本将用户名和密码的值填充上,最后提交表单。这样中,终于实现了自动登录的目标。现在我通过一个特殊的网址,例如http://192.168.0.1/login.jsp?url=,就可以自动访问这个oa了。
你可能注意到参数url,他的值是经过加密的,内容是用户名和密码。当然,你也可以加上有效期,即在有效期内这个链接才是有效的,才可以实现自动登录。
⑧ 怎样用JAVA实现模拟HTTP请求,得到服务器的响应时间等参数求答案
其实你有思路了啊。
问题简化一下:对一个ip,一个线程请求100次。该次请求的响应时间为调用httpClient前的响应时间减去接收到httpClient响应的时间。注意,本次请求是否有效要判断。平均响应时间和最大响应时间只不过是响应时间的统计而已,可以用数据库来做。
就是说数据库记录每次测试请求的响应时间,成功与否。统计数据最后出来。
⑨ java初级 (结合多线程)模拟多个用户访问xx网盘的功能,实现如下功能:
packagetest;
importjava.net.HttpURLConnection;
importjava.net.SocketTimeoutException;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.concurrent.CountDownLatch;
importorg.apache.log4j.Logger;
{
privatestaticLoggerlog=Logger.getLogger(CallHttpRequest.class);
publicstaticintsuccessRequest=0;
publicstaticintfailRequest=0;
publicstaticinttimeOutRequest=0;
privatefinalStringhostString="http://localhost:";
privateStringport;
privateStringpuctPartURL;
privateCountDownLatchbegin;
privateCountDownLatchend;
CallHttpRequest(Stringport,StringpuctPartURL,CountDownLatchbegin,
CountDownLatchend){
this.port=port;
this.puctPartURL=puctPartURL;
this.begin=begin;
this.end=end;
}
privateStringmakeFullURL(){
returnhostString+port+puctPartURL;
}
(){
successRequest++;
}
(){
failRequest++;
}
(){
timeOutRequest++;
}
@Override
publicvoidrun(){
StringurlStr=makeFullURL();
URLurl;
try{
begin.await();
url=newURL(urlStr);
URLConnectionURLconnection=url.openConnection();
=(HttpURLConnection)URLconnection;
httpConnection.setConnectTimeout(3000);
intresponseCode=httpConnection.getResponseCode();
if(responseCode==HttpURLConnection.HTTP_OK){
incrementSuccessCount();
}else{
incrementFailCount();
}
}catch(SocketTimeoutExceptione){
incrementTimeOutCount();
log.error(e.getMessage(),e);
}catch(Exceptione){
log.error(e.getMessage(),e);
}finally{
end.countDown();
}
}
}
Java代码
packagetest;
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.util.ArrayList;
importjava.util.concurrent.CountDownLatch;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
importorg.apache.log4j.Logger;
publicclassParseUrl{
privatestaticLoggerlog=Logger.getLogger(ParseUrl.class);
privatestaticfinalString[]portArray=newString[]{"1111","2222",
"3333"};
/*从文件中使用正则解析出url的部分信息,下面正则是将以/开头的,非空白字符结尾的字符串取出,如“/abcc空格”字符串,s为任意的空白符*/
publicstaticArrayList<String>fetchUrlFromFile(Stringstr){
ArrayList<String>arrayList=newArrayList<String>();
PatternurlPattern=Pattern.compile("/[^\s]+");
//PatternurlPattern=Pattern.compile("/[\S]+");
Matchermatcher=urlPattern.matcher(str);
while(matcher.find()){
arrayList.add(matcher.group());
}
returnarrayList;
}
publicstaticvoidmain(String[]args)throwsException{
CountDownLatchbegin=newCountDownLatch(1);
StringBuilderstringBuilder=newStringBuilder();
StringfilePath=args[0];
FileReaderfr=newFileReader(filePath);
BufferedReaderbr=newBufferedReader(fr);
while(br.ready()){
stringBuilder.append(br.readLine());
}
StringstringAll=stringBuilder.toString();
ArrayList<String>arrayList=fetchUrlFromFile(stringAll);
intallRequestSize=arrayList.size();
log.info("allrequestsizeis"+allRequestSize);
//设置最大的并发数量为60
ExecutorServiceexec=Executors.newFixedThreadPool(60);
CountDownLatchend=newCountDownLatch(allRequestSize);
//inti=0;
for(Stringstr:arrayList){
exec.execute(newCallHttpRequest(portArray[0],str,begin,end));
/*如果想测试60个线程并发的访问,发配到同一台服务器上的两个tomcat,就用下面注释掉的代码
*if(i%2==0){
exec.execute(newCallHttpRequest(portArray[0],str,begin,end));
}elseif(i%2==1){
exec.execute(newCallHttpRequest(portArray[1],str,begin,end));
}*/
//i++;
}
longstartTime=System.currentTimeMillis();
//当60个线程,初始化完成后,解锁,让六十个线程在4个双核的cpu服务器上一起竞争着跑,来模拟60个并发线程访问tomcat
begin.countDown();
try{
end.await();
}catch(InterruptedExceptione){
e.printStackTrace();
}finally{
log.info("allurlrequestsisdone!");
log.info("thesuccesssize:"+CallHttpRequest.successRequest);
log.info("thefailsize:"+CallHttpRequest.failRequest);
log.info("thetimeoutsize:"+CallHttpRequest.timeOutRequest);
doublesuccessRate=(double)CallHttpRequest.successRequest/allRequestSize;
log.info("thesuccessrateis:"+successRate*100+"%");
longendTime=System.currentTimeMillis();
longcostTime=endTime-startTime;
log.info("thetotaltimecostis:"+costTime+"ms");
log.info("everyrequesttimecostis:"+costTime/allRequestSize
+"ms");
}
exec.shutdown();
log.info("mainmethodend");
}
}
⑩ 解决关于java模拟ie 访问web网站有什么好的方法吗
httpclient,这个就ok啦,用chrome查看发起请求的报头,封装好报头和相关的参数,就可以模拟登录注册网站访问,但是有时候会限制,在服务器端如果有相关的数据校验或者session校验的话有时数据就抓不下来