java 爬虫 新浪微博 webclient 模拟登陆 “登陆”按钮无效

用WebClient模拟新浪微博登陆,有js加载问题:
异常如下:
2016-03-10 18:06:19,311 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,025 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,059 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,204 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [v="0", version:0, domain:.taobao.com, path:/, expiry:null] Illegal domain attribute "taobao.com". Domain of origin: "js1.t.sinajs.cn"
2016-03-10 18:06:21,204 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [cookie2="1cb93763dd883cf48427d2013efbb15b", version:0, domain:.taobao.com, path:/, expiry:null] Illegal domain attribute "taobao.com". Domain of origin: "js1.t.sinajs.cn"
2016-03-10 18:06:21,204 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [t="e5f50b797c4e59839d80b1961ae45398", version:0, domain:.taobao.com, path:/, expiry:Wed Jun 08 18:06:21 CST 2016] Illegal domain attribute "taobao.com". Domain of origin: "js1.t.sinajs.cn"
2016-03-10 18:06:21,205 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [_tb_token_="6v92BCkEPJskjf", version:0, domain:.taobao.com, path:/, expiry:null] Illegal domain attribute "taobao.com". Domain of origin: "js1.t.sinajs.cn"
2016-03-10 18:06:21,249 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,331 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,340 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,358 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,395 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,412 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,451 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,533 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,728 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:21,809 [main] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'text/javascript'.
2016-03-10 18:06:22,071 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:22,084 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:22,143 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [cna="HjVoD15v7R4CAdz4Edobp0iZ", version:0, domain:.mmstat.com, path:/, expiry:Sun Mar 08 18:06:22 CST 2026] Illegal domain attribute "mmstat.com". Domain of origin: "g.alicdn.com"
2016-03-10 18:06:22,143 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [sca="37e55bc2", version:0, domain:.mmstat.com, path:/, expiry:null] Illegal domain attribute "mmstat.com". Domain of origin: "g.alicdn.com"
2016-03-10 18:06:22,143 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [tbsa="a63b6f131cd4ff69ca5bf61d_1457604382_1", version:0, domain:.mmstat.com, path:/, expiry:null] Illegal domain attribute "mmstat.com". Domain of origin: "g.alicdn.com"
2016-03-10 18:06:22,143 [main] WARN [org.apache.http.client.protocol.ResponseProcessCookies] - Cookie rejected [atpsida="13075126e2ff6c8b00f358f8_1457604382", version:0, domain:.mmstat.com, path:/, expiry:Sun Mar 08 18:06:22 CST 2026] Illegal domain attribute "mmstat.com". Domain of origin: "g.alicdn.com"
2016-03-10 18:06:23,071 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:23,081 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:51,208 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:51,226 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:51,302 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'http://wbpctips.mobile.sina.cn/adfront/loginadv.php?posid=pos55dc4af3e7219&psid=PDPS000000025446&cip=220.248.17.218&cursor=15&eData=32.07,1&uid=1000959614999&callback=wbad_14576528474261&rnd=14577027909572', but got 'text/html'.
2016-03-10 18:06:51,313 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:51,343 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:06:51,435 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Expected content type of 'application/javascript' or 'application/ecmascript' for remotely loaded JavaScript element at 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=1457604411336', but got 'text/html'.
2016-03-10 18:07:21,391 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:07:21,422 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] WARN [com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl] - Obsolete content type encountered: 'application/x-javascript'.
2016-03-10 18:07:51,352 [JS executor for com.gargoylesoftware.htmlunit.WebClient@145a27f] INFO [com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine] - Caught script exception

模拟点击“登陆”的a标签,预计因为js没有加载所以无法提交;a标签点击过后 还是返回的登陆界面!
模拟点击代码:
HtmlAnchor login_a = page.getFirstByXPath("//*[@id=\"pl_login_form\"]/div[2]/div[1]/div/a[2]");
login_a.click();

有谁知道什么解决不?

2个回答

可能是JS异步加载,导致数据还未加载完成,可以将进程休眼5秒钟,再执行后续操作。Thread.sleep(5000)

是没有获取到登录按钮,试试这样获取 HtmlSubmitInput submitInput = form.getInputByValue("登 录");

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
webClient模拟登录网站报错

十月 06, 2016 8:42:18 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:18 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:18 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:18 下午 com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController processSynchron 信息: Re-synchronized call to http://172.16.51.37/notice_listJSON.html 十月 06, 2016 8:42:18 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 警告: Obsolete content type encountered: 'text/javascript'. 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter error 严重: error: message=[missing { before function body] sourceName=[script in http://172.16.51.37/home_welcome.html from (85, 36) to (106, 10)] line=[87] lineSource=[ function initArray()...{ ] lineOffset=[26] 十月 06, 2016 8:42:19 下午 com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine handleJavaScriptException 信息: Caught script exception ======= EXCEPTION START ======== Exception class=[net.sourceforge.htmlunit.corejs.javascript.EvaluatorException] com.gargoylesoftware.htmlunit.ScriptException: missing { before function body (script in http://172.16.51.37/home_welcome.html from (85, 36) to (106, 10)#87) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:921) at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:746) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:711) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:763) at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:904) at com.gargoylesoftware.htmlunit.html.HtmlScript.executeInlineScriptIfNeeded(HtmlScript.java:307) at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:368) at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:238) at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:257) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:772) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:729) at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1209) at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1111) at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:207) at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:337) at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3137) at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2100) at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:927) at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:506) at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:459) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:979) at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:241) at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:187) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:269) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:157) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:512) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:386) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:304) at com.gargoylesoftware.htmlunit.html.BaseFrameElement.loadInnerPageIfPossible(BaseFrameElement.java:184) at com.gargoylesoftware.htmlunit.html.BaseFrameElement.loadInnerPage(BaseFrameElement.java:122) at com.gargoylesoftware.htmlunit.html.HtmlPage.loadFrames(HtmlPage.java:1818) at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:226) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:519) at com.gargoylesoftware.htmlunit.WebClient.loadDownloadedResponses(WebClient.java:2147) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:946) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.processPostponedActions(JavaScriptEngine.java:1033) at com.gargoylesoftware.htmlunit.html.DomElement.click(DomElement.java:806) at com.gargoylesoftware.htmlunit.html.DomElement.click(DomElement.java:749) at com.gargoylesoftware.htmlunit.html.DomElement.click(DomElement.java:696) at TestC.main(TestC.java:45)

用JAVA HttpClient模拟登陆网站时登陆成功后网站重定向,请问一下 怎么解决???谢谢拉

![提交时触发的事件](https://img-ask.csdn.net/upload/201507/20/1437361248_471227.png) 我觉得最有问题的地方就是我没有触发这个js事件 js的部分代码如下 ![图片说明](https://img-ask.csdn.net/upload/201507/20/1437361648_750233.jpg) ![图片说明](https://img-ask.csdn.net/upload/201507/20/1437361791_32238.png) 通过这个JS代码我猜测YAHOO.util.Connect.asyncRequest('xxx','XXX', callback, null) 和我直接通过get和post请求服务器 服务器处理的话会有些许不同 。 并且我通过post请求登陆后 服务器返回了我![图片说明](https://img-ask.csdn.net/upload/201507/20/1437362183_495181.png) 这代表登陆成功了 可是 当请求成功后 转向网站的个人主页的时候 我发现 上面显示的表明 我没登陆 这是怎么回事???应该怎么解决???是不是必须执行newLogin()这个时间才能登录???

Java_爬虫,如何抓取Js动态生成数据的页面?

<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p> </p> <p> </p> <p> </p> <p>很多网站是用js或Jquery 生成数据的,到后台获取到数据以后,用 document.write()或者("#id").html="" 的方式 写到页面中,这个时候用浏览器查看源码是看不到数据的。<br><br>HttpClient是不行的,看网上说HtmlUnit,说  可以获取后台js加载完后的完整页面,但是我按照文章上说的 写了 ,都不好使。</p> <pre name="code" class="java">String url = "http://xinjinqiao.tprtc.com/admin/main/flrpro.do"; try { WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10); //设置webClient的相关参数 webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); //webClient.getOptions().setTimeout(50000); webClient.getOptions().setThrowExceptionOnScriptError(false); //模拟浏览器打开一个目标网址 HtmlPage rootPage = webClient.getPage(url); System.out.println("为了获取js执行的数据 线程开始沉睡等待"); Thread.sleep(3000);//主要是这个线程的等待 因为js加载也是需要时间的 System.out.println("线程结束沉睡"); String html = rootPage.asText(); System.out.println(html); } catch (Exception e) { } </pre> <p> </p> <p>其实这段代码不好使。<br><br><br>求解答,其中典型的就是这个链接的页面,怎么能在java程序中获取其中的数据?<br><br>http://xinjinqiao.tprtc.com/admin/main/flrpro.do</p> <p> </p> <p> </p> </div>

HttpClient模拟登陆如何获取cookies

我在java web开发时候 尝试使用HttpClient post模拟登陆,可是无法获取到登陆的cookie ,之前在安卓开发时候Xutil可以直接获取,那么在WEB开发时候如何解决获取cookie的问题

java 使用htmlunit框架,设置代理,连接网页出现connection refused异常

做爬虫项目需要用到代理,问题代码如下 ``` ProxyConfig proxyConfig = webClient.getOptions().getProxyConfig(); proxyConfig.setProxyHost(ipPort.getIp()); proxyConfig.setProxyPort(ipPort.getPort()); HtmlPage page = webClient.getPage(ipTestWeb); ``` 其中ip和port的值都死存在的,在client获取页面时报错 rg.apache.http.conn.HttpHostConnectException: Connect to 58.61.185.70:9797 [/58.61.185.70] failed: Connection refused: connect at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:158) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:388) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:183) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1351) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1268) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:381) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:303) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:450) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:435) at cn.com.test.proxy.TestIP.parseIP(TestIP.java:67) at cn.com.test.proxy.TestIP.getRandomUsefulProxy(TestIP.java:140) at cn.com.test.proxy.TestIP.main(TestIP.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

我用spring的webclient做文件下载的功能,下载的是一个zip文件,然后报出了?请大家帮帮忙,谢谢!

错误信息如下: org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'application/zip' not supported at org.springframework.web.reactive.function.BodyExtractors.lambda$readWithMessageReaders$20(BodyExtractors.java:254) at java.util.Optional.orElseGet(Optional.java:267) at org.springframework.web.reactive.function.BodyExtractors.readWithMessageReaders(BodyExtractors.java:250) at org.springframework.web.reactive.function.BodyExtractors.lambda$toMono$2(BodyExtractors.java:92) at org.springframework.web.reactive.function.client.DefaultClientResponse.body(DefaultClientResponse.java:87) at org.springframework.web.reactive.function.client.DefaultClientResponse.bodyToMono(DefaultClientResponse.java:109) at com.jeesite.modules.transmission.entity.Client.pull(Client.java:145) at com.jeesite.modules.transmission.service.TransmissionService.clientPull(TransmissionService.java:279) at com.jeesite.modules.sbos.utils.socket.SendServiceTest.testPull(SendServiceTest.java:105) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:73) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:83) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 我的代码是这样的: 发请求: ``` Mono<ClientResponse> resp = WebClient.create("http://" + this.url).get() .uri("/trans/pull/{busType}/{token}/{appUri}", busType, AesUtils.encode(Constant.TOKEN + "_" + System.currentTimeMillis(), Constant.TOKEN_KEY), this.appUri) .accept(MediaType.APPLICATION_OCTET_STREAM).exchange(); System.out.println("向http://" + this.url + "发送请求"); ClientResponse response = resp.block(); Resource resource = response.bodyToMono(Resource.class).block(); String pullFileDir = Global.getUserfilesBaseDir("pull_file_r"); FileUtils.createDirectory(pullFileDir); File out = new File(pullFileDir + File.separator + this.appUri + busType + ".zip"); try { FileUtils.copyInputStreamToFile(resource.getInputStream(), out); // 删除远端临时文件 WebClient webClient = WebClient.create("http://" + this.url); System.out.println("向http://" + this.url + "发送请求"); webClient.post().uri("/trans/clean_pull_file/{busType}/{token}/{appUri}", busType, AesUtils.encode(Constant.TOKEN + "_" + System.currentTimeMillis(), Constant.TOKEN_KEY), this.appUri) .retrieve().bodyToMono(String.class); } catch (IOException e) { e.printStackTrace(); } ``` 接收的controller: ``` /** * 拉取数据 * * @param busType * 业务类型 * @param token * 令牌 * @param appUri * 应用唯一标识 * @param request * 请求对象 * @param response * 响应对象 */ @GetMapping("pull/{busType}/{token}/{appUri}") public void pull(@PathVariable("busType") String busType, @PathVariable("token") String token, @PathVariable("appUri") String appUri, HttpServletRequest request, HttpServletResponse response) { String tempFileDir = Global.getUserfilesBaseDir("pull_file"); String tempFileName = appUri + busType + ".zip"; FileUtils.downFile(new File(tempFileDir + File.separator + tempFileName), request, response); } ```

大神求救 htmlunit 爬虫抓取中国移动数据的问题。

移动登陆地址:https://sn.ac.10086.cn/login 以下是我的测试代码。 根据元素获取图片保存到本地,然后scanner输入验证码之后模拟提交。但是 如果说 验证码输入的位数不对,还会给我返回 验证码必须为4位 如果按照我下载保存的验证码 去输入没有任何提示了,打印的页面还是 登陆页面。 所以 小弟不知道是因为验证码输入错了。 还是因为这种方法不行?求指教 String phoneNo = "18220834780"; String passwords = "xxx"; String validateCodes = null; // 5、模拟用户登录 final WebClient webClient = new WebClient(); // 1.获取某个待测页面 final HtmlPage page = webClient.getPage("https://sn.ac.10086.cn/login"); System.out.println(page.getTitleText() + "---------------------"); HtmlForm form = page.getForms().get(0); HtmlTextInput username = (HtmlTextInput) form.getInputByName("userName"); System.out.println(username); HtmlPasswordInput password = (HtmlPasswordInput) form.getInputByName("password"); System.out.println(password); HtmlTextInput verifyCode = (HtmlTextInput) form.getInputByName("verifyCode"); username.setValueAttribute(phoneNo); password.setValueAttribute(passwords); DomNodeList<DomNode> iList = page.querySelectorAll(".loginPageBtn2013"); HtmlImage valiCodeImg = (HtmlImage) page.getElementById("verifyImg"); ImageReader imageReader = valiCodeImg.getImageReader(); BufferedImage bufferedImage = imageReader.read(0); BufferedImage inputbig = new BufferedImage(256, 256, BufferedImage.TYPE_INT_BGR); Graphics2D g = (Graphics2D) inputbig.getGraphics(); g.drawImage(bufferedImage, 0, 0, 100, 100, null); // 画图 g.dispose(); inputbig.flush(); File file2 = new File("e:/"); // 此目录保存缩小后的关键图 if (file2.exists()) { System.out.println("多级目录已经存在不需要创建!!"); } else { // 如果要创建的多级目录不存在才需要创建。 file2.mkdirs(); } String name = "asasdas.png"; String fname = name.substring(0, name.lastIndexOf("."));// 新名字 ImageIO.write(inputbig, "jpg", new File("e:/" + fname + ".jpg")); // 将其保存在C:/imageSort/targetPIC/下 System.out.println("请输入验证码"); Scanner scanner = new Scanner(System.in); verifyCode.setValueAttribute(scanner.next()); HtmlPage retPage = ((DomElement) iList.get(0)).click(); System.out.println(retPage.asXml());

htmlunit模拟登录 请高人解答

使用htmlunit模拟登录的时候 ,首先穿创建了一个webclient 用webclient请求登录页面,同事请求解析验证码,验证码解析正确,然后开始登录系统,一直提示验证码错误。 WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_11); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient .getOptions().setUseInsecureSSL(true); WebRequest request1 = new WebRequest(new URL("http://rd2.zhaopin.com/s/loginmgr/login.asp")); HtmlPage htmlPage = webClient.getPage(request1); //第三步 获取界面元素 HtmlInput userName = htmlPage.getHtmlElementById("LoginName"); HtmlInput password = htmlPage.getHtmlElementById("Password"); HtmlInput checkCode = htmlPage.getHtmlElementById("CheckCode"); HtmlInput btn = htmlPage.getHtmlElementById("login"); WebRequest request = new WebRequest(new URL("https://passport.zhaopin.com/checkcode/imgrd")); UnexpectedPage imagePage = webClient.getPage(request); InputStream in = imagePage.getWebResponse().getContentAsStream(); File storeFile = new File("D:/zlzp.png"); BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(storeFile)); byte[] buf = new byte[2048]; int length = in.read(buf); while (length != -1) { output.write(buf, 0, length); length = in.read(buf); } in.close(); output.close(); String valCode = new OCR().recognizeText(new File("D:\\zlzp.png"), "png"); System.out.println(valCode); userName.setAttribute("value", ""); password.setAttribute("value", ""); checkCode.setAttribute("value", valCode); HtmlPage page2 = btn.click(); System.out.println("\n\n\n"); System.out.println(page2.asText());

.net代码转成JAVA代码,求大神现身!

接手了一个软件,之前用.net开发的,让转成JAVA代码,实现的功能主要是注册和获取网络列表,求转换的方法思路。

JAVA htmlunit 抓取不到 页面 元素

下面代码中 能获取到百度页面的Form 表单, 但是获取不到另外一个 网页的表单, 此时该如何处理? ps:获取另外一个网页的源码保存html后,用浏览器打开,能看到 form 表单。 package com.xttx.cn.fetchpro.fetchImp; import java.io.IOException; import java.net.URL; import java.util.List; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.CollectingAlertHandler; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.HttpWebConnection; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.WebRequest; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.xttx.cn.fetchpro.exception.PageNotFoundException; public class SimulationFetch { protected static WebClient webClient = null; public WebClient getWebClient() { return webClient; } public void setWebClient(WebClient webClient) { this.webClient = webClient; } static WebRequest request = null; public static void main(String[] args) throws FailingHttpStatusCodeException, IOException, PageNotFoundException, InterruptedException { // TODO Auto-generated method stub BrowserVersion.FIREFOX_24.setBrowserLanguage("zh-CN"); BrowserVersion.FIREFOX_24.setSystemLanguage("zh-CN"); BrowserVersion.FIREFOX_24.setUserLanguage("zh-CN"); BrowserVersion.FIREFOX_24.setUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0"); BrowserVersion.FIREFOX_24.setBrowserVersion(46.0f); BrowserVersion.FIREFOX_24.setCpuClass("x64"); webClient = new WebClient(BrowserVersion.FIREFOX_24); webClient.setWebConnection(new HttpWebConnection(webClient)); webClient.getCache().clear(); webClient.getCookieManager().clearCookies(); webClient.getOptions().setJavaScriptEnabled(true); webClient.setJavaScriptTimeout(60*1000); webClient.getOptions().setCssEnabled(true); webClient.getOptions().setActiveXNative(true); webClient.getOptions().setPopupBlockerEnabled(true); webClient.getOptions().setRedirectEnabled(true); webClient.getOptions().setTimeout(10000); webClient.getOptions().setDoNotTrackEnabled(true); webClient.getCookieManager().setCookiesEnabled(true); webClient.getOptions().setThrowExceptionOnFailingStatusCode(true); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setUseInsecureSSL(true); webClient.getOptions().setSSLInsecureProtocol("TLSv1.2"); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.setAlertHandler(new CollectingAlertHandler()); HtmlPage loginPageWithForm =(HtmlPage)webClient.getPage(new WebRequest(new URL("https://login.youzan.com/sso/index?service=kdt&from_source=pzshouye"))); List<HtmlForm> htmlForm0 = loginPageWithForm.getForms(); HtmlPage loginPageNoForm = (HtmlPage)webClient.getPage(new WebRequest(new URL("https://www.baidu.com/"))); HtmlForm htmlForm = loginPageNoForm.getForms().get(0); System.out.println("---"); } }

WebClient 远程服务器返回错误: (401) 未经授权

使用C#写了一个简单的winform程序,想实现自动下载Reporting Service的报表。结果一直报错: System.Net.WebException: 远程服务器返回错误: (401) 未经授权。 ---> System.ComponentModel.Win32Exception: WebClient wc = new WebClient(); wc.DownloadFile(url,path) 报表服务器是内网,我直接再浏览器中打开地址 http://dbserver01/ReportServer/Pages/ReportViewer.aspx?spGetAuditingOrdersCount&Value1=2017/3/13&rs:Format=EXCEL ,就会直接导出文件,所以我想使用WebClient来下载,但是却报没有权限,不知道有没有解决办法。 网上查了好久,发现可能是权限问题,加了下面的语句,仍然报错 wc.Credentials = new NetworkCredential("software", "password", System.Environment.UserDomainName);

c# WebClient下载问题

url结尾 input 就报错 换成结尾url txt zip rar 都是可以的.... string URLAddress = @"http://translate.google.cn/translate_tts?ie=UTF-8&q=你好&tl=zh-CN&total=1&idx=0&textlen=9&prev=input"; string receivePath = @"C:\"; System.Net.WebClient client = new System.Net.WebClient(); client.DownloadFile(URLAddress, receivePath + System.IO.Path.GetFileName(URLAddress));

c#中WebClient重复发送请求的问题

wpf .net4.0环境, 我用按钮,点击执行下面的代码段,点击一次, 发送http请求到指定的url,这个url是我写的服务器端程序 但是为什么我只是点击了一次按钮,服务器端却收到两次同样的请求呢? 而我用ie浏览器的地址框发送同样的url到我的服务器,就是收到一次请求。 也就是说,WebClient会自动发送两次请求,这是什么原理? 如何解决呢? WebClient mo_client = new WebClient(); string ls_rst = string.Empty; try { StreamReader lo_sr = new StreamReader(mo_client.OpenRead(new Uri(url)), UTF8Encoding.UTF8); ls_rst = lo_sr.ReadToEnd(); lo_sr.Close(); lo_sr.Dispose(); lo_sr = null; } catch (Exception ex) { }

htmlunit+jsoup爬取知乎视频,获取的html字符串中缺少视频信息,如何解决?

大神帮忙看一下 今天使用htmlunit+jsoup爬取知乎网站的视频,发现爬取到的html中缺少视频的信息,无法进行下一步了 知乎视频网址:https://video.zhihu.com/video/1157743087110549504?autoplay=false&useMSE= 浏览器检查中查看到的视频信息 ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570872018_377176.png) java代码 ``` @Test public void testttt() { final WebClient webClient = new WebClient(BrowserVersion.CHROME);//新建一个模拟谷歌Chrome浏览器的浏览器客户端对象 webClient.getOptions().setThrowExceptionOnScriptError(false);//当JS执行出错的时候是否抛出异常, 这里选择不需要 webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//当HTTP的状态非200时是否抛出异常, 这里选择不需要 webClient.getOptions().setActiveXNative(false); webClient.getOptions().setCssEnabled(false);//是否启用CSS, 因为不需要展现页面, 所以不需要启用 webClient.getOptions().setJavaScriptEnabled(true); //很重要,启用JS webClient.setAjaxController(new NicelyResynchronizingAjaxController());//很重要,设置支持AJAX HtmlPage page = null; try { page = webClient.getPage("https://video.zhihu.com/video/1157743087110549504?autoplay=false&useMSE=");//尝试加载上面图片例子给出的网页 // page = webClient.getPage("http://ent.sina.com.cn/film/");//尝试加载上面图片例子给出的网页 } catch (Exception e) { e.printStackTrace(); }finally { webClient.close(); } webClient.waitForBackgroundJavaScript(30000000);//异步JS执行需要耗时,所以这里线程要阻塞30秒,等待异步JS执行结束 String pageXml = page.asXml();//直接将加载完成的页面转换成xml格式的字符串 System.out.println(pageXml); //TODO 下面的代码就是对字符串的操作了,常规的爬虫操作,用到了比较好用的Jsoup库 // Document document = Jsoup.parse(pageXml);//获取html文档 // List<Element> infoListEle = document.getElementById("feedCardContent").getElementsByAttributeValue("class", "feed-card-item");//获取元素节点等 // infoListEle.forEach(element -> { // System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").text()); // System.out.println(element.getElementsByTag("h2").first().getElementsByTag("a").attr("href")); // }); } ``` 运行程序打印的html如下: ![图片说明](https://img-ask.csdn.net/upload/201910/12/1570872108_470794.png) 有大神遇到过这个问题吗?帮忙看一下

WebClient UploadFile方法求教

public static void upLoad(string url, string path) { using (WebClient myWebClient = new WebClient()) { myWebClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); byte[] responseArray = myWebClient.UploadFile(url, "POST", path); string msg = Encoding.GetEncoding("UTF-8").GetString(responseArray); if (msg.Contains("成功")) { Console.WriteLine("ok"); } } } 上传MP4文件 大小都在1m以内 有的电脑可以上传成功 而有的电脑却直接报错 实在是想不明白 求指点!

C#WebClient在第二个请求时响应超时

<div class="post-text" itemprop="text"> <p>I am creating a C# Application that create a WebClient request to a PHP file on server and perform some operation and WebClient request is in loop but i am facing a problem that WebClient request on first iteration works as needed but second call gives timeout. I am not sure weather some value is missing in WebClient request or to refresh the call. Code is below.</p> <pre><code>using (WebClient client = new WebClient()){ var values = new NameValueCollection(); values["db_op_and_remove_file"] = "1"; values["path"] = file_path; values["question"] = question; values["product_id"] = product_id; values["tempdir"] = tempdir; client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; client.UseDefaultCredentials = true; var response = client.UploadValues(server_header, values); responseString_keyword = Encoding.Default.GetString(response); } </code></pre> </div>

爬取js加载的内容出错,在另外一台机器上不报错,有经验的大神知不知道是哪里错了啊?

主要代码: HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_24); driver.setJavascriptEnabled(true); driver.get(“http://sh.58.com”); //执行此句报错 报错log: ``` org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: Exception invoking querySelectorAll Build info: version: '2.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40' System info: host: 'LAPTOP-MOL244NS', ip: '192.168.43.202', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.7.0_80' Driver info: driver.version: HtmlUnitDriver at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:493) at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:469) at com.demo.lixf.firstSpringmvc.spider.DemoSelenium$1.execute(DemoSelenium.java:52) at cn.edu.hfut.dmic.webcollector.fetcher.Fetcher$FetcherThread.run(Fetcher.java:227) Caused by: com.gargoylesoftware.htmlunit.ScriptException: Wrapped com.gargoylesoftware.htmlunit.ScriptException: Exception invoking querySelectorAll at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:705) at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620) at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:513) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:591) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:566) at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:975) at com.gargoylesoftware.htmlunit.html.HtmlScript.executeInlineScriptIfNeeded(HtmlScript.java:349) at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:409) at com.gargoylesoftware.htmlunit.html.HtmlScript$3.execute(HtmlScript.java:274) at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:288) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:741) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:701) at org.cyberneko.html.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1170) at org.cyberneko.html.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1072) at org.cyberneko.html.filters.DefaultFilter.endElement(DefaultFilter.java:206) at org.cyberneko.html.filters.NamespaceBinder.endElement(NamespaceBinder.java:330) at org.cyberneko.html.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3126) at org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2093) at org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:920) at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499) at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:965) at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:247) at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:193) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:268) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:156) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:468) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:342) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:407) at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:480) ... 3 more

模拟服务器和客户端通信时出现的java.net.SocketException: Connection reset

模拟客户端上传,服务器保存下载并返回通知的功能,程序运行成功结束,客户端也收到了服务器的返回信息,但是最后报出java.net.SocketException: Connection reset ,,,请问是什么原因 客户端代码 ``` public static void main(String[] args) throws IOException { //客户端本地字节流读取文件 FileInputStream fis = new FileInputStream("D:\\111.jpg"); //客户端使用网络字节输出流,上传文件到服务器 Socket socket = new Socket("127.0.0.1",8888); OutputStream outputStream = socket.getOutputStream(); int len = 0; byte[] bytes = new byte[1024]; while ((len = fis.read(bytes))!=-1){ outputStream.write(bytes,0,len); } socket.shutdownOutput(); //客户端使用网络字节输入流,读取服务器回弹的信息 InputStream is = socket.getInputStream(); while((len = is.read(bytes))!=-1){ System.out.println(new String(bytes,0,len)); } fis.close(); socket.close(); } ``` 服务器代码 ``` public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8888); Socket accept = server.accept(); InputStream is = accept.getInputStream(); File file = new File("D:\\javagogogo"); if (!file.exists()){ file.mkdir(); } FileOutputStream fos = new FileOutputStream(file+"\\pic.jpg"); int len = 0 ; byte[] bytes = new byte[1024]; while ((len = is.read(bytes))!=-1){ fos.write(bytes,0,len); } OutputStream ops = accept.getOutputStream(); ops.write("上传成功".getBytes()); fos.close(); server.close(); } ```

WebClient循环DownLoadData

WebClient循环DownLoadData,有时超时有时直接停在那里不动了,十几分钟也不报错什么的。![图片说明](https://img-ask.csdn.net/upload/201611/08/1478574694_371386.png)![图片说明](https://img-ask.csdn.net/upload/201611/08/1478574683_970879.png)

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:csdn590)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

Windows版YOLOv4目标检测实战:训练自己的数据集

课程演示环境:Windows10; cuda 10.2; cudnn7.6.5; Python3.7; VisualStudio2019; OpenCV3.4 需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:训练自己的数据集》 课程链接:https://edu.csdn.net/course/detail/28745 YOLOv4来了!速度和精度双提升! 与 YOLOv3 相比,新版本的 AP (精度)和 FPS (每秒帧率)分别提高了 10% 和 12%。 YOLO系列是基于深度学习的端到端实时目标检测方法。本课程将手把手地教大家使用labelImg标注和使用YOLOv4训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv4使用AlexyAB/darknet,在Windows系统上做项目演示。包括:安装软件环境、安装YOLOv4、标注自己的数据集、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算)和先验框聚类分析。还将介绍改善YOLOv4目标检测性能的技巧。 除本课程《Windows版YOLOv4目标检测实战:训练自己的数据集》外,本人将推出有关YOLOv4目标检测的系列课程。请持续关注该系列的其它视频课程,包括: 《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》 《Windows版YOLOv4目标检测实战:中国交通标志识别》 《Windows版YOLOv4目标检测:原理与源码解析》

lena全身原图(非256*256版本,而是全身原图)

lena全身原图(非256*256版本,而是全身原图) lena原图很有意思,我们通常所用的256*256图片是在lena原图上截取了头部部分的256*256正方形得到的. 原图是花花公子杂志上的一个

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

Java调用微信支付

Java 使用微信支付 一. 准备工作 1.

汽车租赁管理系统需求分析规格说明书

汽车租赁管理系统需求分析规格说明书,这只是一个模板,如果有不会的可以借鉴一下,还是蛮详细的。。。。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

程序员的算法通关课:知己知彼(第一季)

【超实用课程内容】 程序员对于算法一直又爱又恨!特别是在求职面试时,算法类问题绝对是不可逃避的提问点!本门课程作为算法面试系列的第一季,会从“知己知彼”的角度,聊聊关于算法面试的那些事~ 【哪些人适合学习这门课程?】 求职中的开发者,对于面试算法阶段缺少经验 想了解实际工作中算法相关知识 在职程序员,算法基础薄弱,急需充电 【超人气讲师】 孙秀洋&nbsp;| 服务器端工程师 硕士毕业于哈工大计算机科学与技术专业,ACM亚洲区赛铜奖获得者,先后在腾讯和百度从事一线技术研发,对算法和后端技术有深刻见解。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27272 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程无限观看时长,但是大家可以抓紧时间学习后一起讨论哦~

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

Python入门视频精讲

Python入门视频培训课程以通俗易懂的方式讲解Python核心技术,Python基础,Python入门。适合初学者的教程,让你少走弯路! 课程内容包括:1.Python简介和安装 、2.第一个Python程序、PyCharm的使用 、3.Python基础、4.函数、5.高级特性、6.面向对象、7.模块、8.异常处理和IO操作、9.访问数据库MySQL。教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

Java62数据提取代码

利用苹果手机微信下面的wx.data文件提取出62数据,通过62可以实现不同设备直接登陆,可以通过文件流的方式用脚本上传到服务器进行解析

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

2018年全国大学生计算机技能应用大赛决赛 大题

2018年全国大学生计算机技能应用大赛决赛大题,程序填空和程序设计(侵删)

Lena图像处理测试专业用图,高清完整全身原图

Lena图像处理测试专业用图,高清完整全身原图,该图片很好的包含了平坦区域、阴影和纹理等细节,这些都有益于测试各种不同的图像处理算法。它是一幅很好的测试照片!其次,由于这是一个非常有魅力女人的照片。

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

verilog实现地铁系统售票

使用 verilog 实现地铁售票

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

获取Linux下Ftp目录树并逐步绑定到treeview

在linux下抓取目录树,双击后获取该节点子节点(逐步生成)。另外有两个类,一个是windows下的(一次性获取目录树),一个是linux下的(足部获取目录树)

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

微信小程序开发实战之番茄时钟开发

微信小程序番茄时钟视频教程,本课程将带着各位学员开发一个小程序初级实战类项目,针对只看过官方文档而又无从下手的开发者来说,可以作为一个较好的练手项目,对于有小程序开发经验的开发者而言,可以更好加深对小程序各类组件和API 的理解,为更深层次高难度的项目做铺垫。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

微信小程序 实例汇总 完整项目源代码

微信小程序 实例汇总 完整项目源代码

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯

基于西门子S7—1200的单部六层电梯设计程序,1部6层电梯。 本系统控制六层电梯, 采用集选控制方式。 为了完成设定的控制任务, 主要根据电梯输入/输出点数确定PLC 的机型。 根据电梯控制的要求,

相关热词 c#对文件改写权限 c#中tostring c#支付宝回掉 c#转换成数字 c#判断除法是否有模 c# 横向chart c#控件选择多个 c#报表如何锁定表头 c#分级显示数据 c# 不区分大小写替换
立即提问
相关内容推荐