
正文
java京东抢代码,京东抢购程序java
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java怎么写自动去抢双十一程序
android中网络通信分为socket编程和http编程,这里只介绍htt方面。网络请求方式可分为get请求,post两种请求方式,GET方式在进行数据请求时,会把数据附加到URL后面传递给服务器,比如常见的:,POST方式则是将请求的数据放到HTTP请求头中,作为请求头的一部分传入服务器。
所以,在进行HTTP编程前,首先要明确究竟使用的哪种方式进行数据请求的。
android中Http编程有两种:1、HttpURLConnection;2、HttpClient
首先介绍一下HttpURLConnection方式的get请求和post请求方法:
[java] view
plaincopyprint?
private MapString, String paramsValue;
String urlPath=null;
// 发送地;password=123
public void initData(){
urlPath="";
paramsValue=new HashMapString, String();
paramsValue.put("username", "111");
paramsValue.put("password", "222");
}
private MapString, String paramsValue;
String urlPath=null;
// 发送地;password=123
public void initData(){
urlPath="";
paramsValue=new HashMapString, String();
paramsValue.put("username", "111");
paramsValue.put("password", "222");
}
get方式发起请求:
[java] view
plaincopyprint?
private boolean sendGETRequest(String path, MapString, String params) throws Exception {
boolean success=false;
// StringBuilder是用来组拼请求地址和参数
StringBuilder sb = new StringBuilder();
sb.append(path).append("?");
if (params != null params.size() != 0) {
for (Map.EntryString, String entry : params.entrySet()) {
// 如果请求参数中有中文,需要进行URLEncoder编码 gbk/utf8
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
sb.append("");
}
sb.deleteCharAt(sb.length() - 1);
}
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(20000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200) {
success= true;
}
if(conn!=null)
conn.disconnect();
return success;
}
private boolean sendGETRequest(String path, MapString, String params) throws Exception {
boolean success=false;
// StringBuilder是用来组拼请求地址和参数
StringBuilder sb = new StringBuilder();
sb.append(path).append("?");
if (params != null params.size() != 0) {
for (Map.EntryString, String entry : params.entrySet()) {
// 如果请求参数中有中文,需要进行URLEncoder编码 gbk/utf8
sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8"));
sb.append("");
}
sb.deleteCharAt(sb.length() - 1);
}
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(20000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200) {
success= true;
}
if(conn!=null)
conn.disconnect();
return success;
}
相关问答
Q1: 100个商品1000个人抢,java该怎么做
可以将抢商品的请求放入一个操作list A中,然后按顺序取出list中的请求去购买商品,购买成功后放入另一个list B中。每次接受到请求后查看listB中的信息,如果size等于100返回商品售光的信息。每次放入B后检查B的size,当size等于100,取出A中的所有请求,返回商品售光的信息
Q2: 京东面试题 java 动态代理主要怎么实现的
在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。
其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。
Proxy
类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现,如下,HelloWorld接口定义的业务方
法,HelloWorldImpl是HelloWorld接口的实现,HelloWorldHandler是InvocationHandler接口实
现。代码如下:
业务接口:
public interface HelloWorld {
void sayHelloWorld() ;
}
业务接口实现:
public class HelloWorldImpl implements HelloWorld {
public void sayHelloWorld() {
System.out.println("Hello World!");
}
}
InvocationHandler实现,需要在接口方法调用前后加入一部份处理工作,这里仅仅在方法调用前后向后台输出两句字符串,其代码如下:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class HelloWorldHandler implements InvocationHandler {
//要代理的原始对象
private Object objOriginal;
/**
* 构造函数。
* @param obj 要代理的原始对象。
*/
public HelloWorldHandler(Object obj) {
this.objOriginal = obj ;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object result ;
//方法调用之前
doBefore();
//调用原始对象的方法
result = method.invoke(this.objOriginal ,args);
//方法调用之后
doAfter();
return result ;
}
private void doBefore() {
System.out.println("before method invoke!");
}
private void doAfter() {
System.out.println("after method invoke!");
}
}
测试代码:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Test {
public static void main(String[] args) {
HelloWorld hw = new HelloWorldImpl();
InvocationHandler handler = new HelloWorldHandler(hw);
HelloWorld proxy = (HelloWorld) Proxy.newProxyInstance(
hw.getClass().getClassLoader(),
hw.getClass().getInterfaces(),
handler);
proxy.sayHelloWorld();
}
}
?? 首先获取一个业务接口的实现对象;
?? 获取一个InvocationHandler实现,此处是HelloWorldHandler对象;
?? 创建动态代理对象;
?? 通过动态代理对象调用sayHelloWorld()方法,此时会在原始对象HelloWorldImpl. sayHelloWorld()方法前后输出两句字符串。
运行测试类输出如下:
before method invoke!
Hello World!
after method invoke!
此处Test类中的方法调用代码比较多,在我们的实际应用中可以通过配置文件来来简化客户端的调用实现。另外也可以通过动态代理来实现简单的AOP
Q3: java抓取京东商城商品信息,根据网页源文件如何写抓取如下信息:
听说过jsoup吗。很简单,两句话搞定。
Document document = Jsoup
.connect("这个页面的url例如:")
.method(Connection.Method.GET)
.followRedirects(false)
.timeout(100000)
.get();
Element el=document.getElementById("zzh_jd")//div 开始的id 。
//然后这个element你想怎么用就怎么用了。
//jsoup的使用类似于javascript很方便。
Q4: 用JAVA怎么写一个秒杀器。求具体代码
最好不要用java写秒杀器,因为你就算用 httpclient 拿到的也是未经过渲染的html页面,很多页面js都没有加载,你根本不知道渲染之后的页面长什么样子,你最好学学木鱼的火车票抢票助手,他用的是 firefox 的插件 scriptish 来写抢票脚本,其实抢票跟秒杀是一个原理的,我第一个秒的程序就是照着他的程序改的,用这个上手也比较容易,但是要求你对javascript比较熟悉,不过比用java实现靠谱多了






