java关于在程序中实现网页操作的问题,坐等!

求问大神怎么解决以下问题,为了描述清楚用如下标记:A平台:一个用java写好的XX仿真平台,每隔500ms的周期提供一系列数据B网站:一个做数据分析的学术网站,用户将数据... 求问大神怎么解决以下问题,为了描述清楚用如下标记:A平台:一个用java写好的XX仿真平台,每隔500ms的周期提供一系列数据B网站:一个做数据分析的学术网站,用户将数据以XML文件上传,可以运算出分析结果显示(提供开在local虚拟机上的服务器版本)目标:为A平台加一个功能,在不调用浏览器的情况下,将A平台每个周期提供的数据写入XML,自动上传至B网站,分析后将结果信息扒下来,显示在A软件中,即每次生成数据自动执行上面的过程。(直接在A的源代码里添加模块实现)问题:这种在网站上的自动操作过程要用什么方式实现?以前用URLConnection可以从静态网站扒信息下来,现在要实现操作就不懂了。用HttpClient的话,但以前都是自己做模拟客户端和服务器端,比如上传文件都需要指定了目标URL,这个现在网站是别人的。这方面实在不太懂,感觉应该是很简单的,但无奈太菜ORZ- -被各种催,望大神救于苦海。 展开
 我来答
百度网友fe6d0b6
推荐于2016-04-07 · TA获得超过275个赞
知道小有建树答主
回答量:397
采纳率:75%
帮助的人:269万
展开全部

如果GET方法可以发送请求,那么HttpConnection是可以搞定的,就是拼接下URL字符串而已。

如果是POST方式发送请求的,而且网站只是一个简单提交表单,那么WebDriver这个开源项目,使用这个项目自带的浏览器驱动(一个简单的浏览器,不会显示浏览器具体操作,但可以模拟相关的操作)是可以满足你的要求的。

给你一个简单的例子:


import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;


public class TestHtmlUnitDriver {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
HtmlUnitDriver dr = new HtmlUnitDriver(false);  //使用自动的简单HTML浏览器驱动,false为不显示DEBUG信息。
dr.get("
);

//检查页面title
System.out.println("页面Title:"+dr.getTitle());

WebElement el = dr.findElement(By.xpath("//html"));


// System.out.println(el.getText());

WebElement input = dr.findElement(By.id("kw"));

//搜索关键字
input.sendKeys("webDriver");

WebElement button = dr.findElement(By.id("su"));
//提交表单 webDriver会自动从表单中查找提交按钮并提交
button.click();
//或者直接
//input.submit();



//检查页面title
System.out.println("页面Title:"+dr.getTitle());

dr.close();

}

}

 另外一种方式,JDK自带的HttpConnection



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class TestHttpURLConnection {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
String url="http://www.baidu.com/s?wd=WebDriver&ie=utf-8";
try {
HttpURLConnection httpUrlConnection = (HttpURLConnection) new URL(url).openConnection();
httpUrlConnection.setRequestMethod("GET");
httpUrlConnection.setUseCaches(true); //使用缓存
httpUrlConnection.connect();           //建立连接
InputStream inputStream = httpUrlConnection.getInputStream(); //读取输入流
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); 
String string;
while ((string = bufferedReader.readLine()) != null) {
System.out.println(string); //打印输出
}

bufferedReader.close();
inputStream.close();
httpUrlConnection.disconnect();

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //创建连接
}

}
追问
哥们你好专业,我准备试试两种方法,谢谢~
如果还有个问题:
关于第二种,拼接url字符串这个是怎么操作的,比如网站上有一个上传按钮的话要怎么获得上传url(我之前在源代码和js文件里貌似都没找到这样的信息,一般会写进数据库之类的吧)
追答
这个你看看提交后浏览器的URL是什么,看看URL信息里有没有你提交的数据。
ぷ親伱メ尐嘴e04a
2014-01-06 · TA获得超过135个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:94.6万
展开全部

问题就在于B网站是不是和你们有合作关系的,如果有合作关系,让B提供上传XML文件的接口。

如果没有合作关系的话,试问你怎么可以随便上传数据到别人的网站,你传个文件到百度主页试试。

追问
XML文件的格式是提供的,就是他提供了这个上传服务,有上传按钮,可以在浏览器上上传,我只是想把这个过程封装进自己的程序
追答
一般我们2家公司传文件的话都是走FTP,像你这种方式还真没见过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友951d77399
2015-10-26 · 超过61用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:131万
展开全部
具体描述一下要实现的操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式