webmagic request设置POST方法报NullPointerException!

发布于 2021-12-02 03:07:12 字数 3181 浏览 737 评论 2

public class MaxSpider implements PageProcessor {

	private static Site site=Site.me();
	
	static{
		site.setCharset("UTF-8");
		site.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0");
	}
			
	public static void main(String []args){
		Request request=new Request("http://q.maxjia.com/api/bets/join_roll_room/?pkey=&lang=zh-cn");
		request.setMethod(HttpConstant.Method.POST);
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("passwd", "");
		map.put("room_id", "93628");
		request.setExtras(map);
		
		Spider.create(new MaxSpider())
			.addRequest(request)
			.run();
	}
	@Override
	public void process(Page page) {
		page.putField("join",page.getJson().toString());
	}

	@Override
	public Site getSite() {
		return site;
	}
}


2016-12-19 21:33:53,880 ERROR [us.codecraft.webmagic.Spider] - process request Request{url='http://q.maxjia.com/api/bets/join_roll_room/?pkey=&lang=zh-cn', method='POST', extras={statusCode=0, passwd=, room_id=93628}, priority=0} error
java.lang.NullPointerException
	at us.codecraft.webmagic.downloader.HttpClientDownloader.selectRequestMethod(HttpClientDownloader.java:161)
	at us.codecraft.webmagic.downloader.HttpClientDownloader.getHttpUriRequest(HttpClientDownloader.java:133)
	at us.codecraft.webmagic.downloader.HttpClientDownloader.download(HttpClientDownloader.java:91)
	at us.codecraft.webmagic.Spider.processRequest(Spider.java:408)
	at us.codecraft.webmagic.Spider$1.run(Spider.java:322)
	at us.codecraft.webmagic.selector.thread.CountableThreadPool$1.run(CountableThreadPool.java:74)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)


//HttpClientDownloader.java:161
 if (method == null || method.equalsIgnoreCase(HttpConstant.Method.GET)) {
            //default get
            return RequestBuilder.get();       //161就是这一段
        } else if (method.equalsIgnoreCase(HttpConstant.Method.POST)) {
            RequestBuilder requestBuilder = RequestBuilder.post();
            NameValuePair[] nameValuePair = (NameValuePair[]) request.getExtra("nameValuePair");
            if (nameValuePair != null && nameValuePair.length > 0) {
                requestBuilder.addParameters(nameValuePair);
            }

日记打印的明明是method="POST",不知道为什么会跑到那里,而且还报空指针。改成GET方法后就不会了。

刚学webmagic,有点懵.....现在脑袋有点痛,求解救!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野心澎湃 2021-12-03 00:52:53

把源代码看了下,弄好了!

灵芸 2021-12-02 03:55:35

@黄亿华

大神救救我!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文