java关于在程序中实现网页操作的问题,坐等!
求问大神怎么解决以下问题,为了描述清楚用如下标记:A平台:一个用java写好的XX仿真平台,每隔500ms的周期提供一系列数据B网站:一个做数据分析的学术网站,用户将数据...
求问大神怎么解决以下问题,为了描述清楚用如下标记:A平台:一个用java写好的XX仿真平台,每隔500ms的周期提供一系列数据B网站:一个做数据分析的学术网站,用户将数据以XML文件上传,可以运算出分析结果显示(提供开在local虚拟机上的服务器版本)目标:为A平台加一个功能,在不调用浏览器的情况下,将A平台每个周期提供的数据写入XML,自动上传至B网站,分析后将结果信息扒下来,显示在A软件中,即每次生成数据自动执行上面的过程。(直接在A的源代码里添加模块实现)问题:这种在网站上的自动操作过程要用什么方式实现?以前用URLConnection可以从静态网站扒信息下来,现在要实现操作就不懂了。用HttpClient的话,但以前都是自己做模拟客户端和服务器端,比如上传文件都需要指定了目标URL,这个现在网站是别人的。这方面实在不太懂,感觉应该是很简单的,但无奈太菜ORZ- -被各种催,望大神救于苦海。
展开
3个回答
展开全部
如果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信息里有没有你提交的数据。
展开全部
问题就在于B网站是不是和你们有合作关系的,如果有合作关系,让B提供上传XML文件的接口。
如果没有合作关系的话,试问你怎么可以随便上传数据到别人的网站,你传个文件到百度主页试试。
追问
XML文件的格式是提供的,就是他提供了这个上传服务,有上传按钮,可以在浏览器上上传,我只是想把这个过程封装进自己的程序
追答
一般我们2家公司传文件的话都是走FTP,像你这种方式还真没见过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体描述一下要实现的操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询