商城的搜索服务solr

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiao__jia__jia/article/details/86507144

 


                             商城的搜索服务solr

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-serviceAPI接口。
用户可以通过
http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;
也可以通过
Http Get操作提出查找请求,并得到XML格式的返回结果。

 

Solr这个软件的理解:

1 solr是一个独立的搜索应用服务器,启动与tomcat类似

2 solr中可以启动并加载solr的搜索项目,与javaEEweb项目在tomcat中启动类似

3 solr应用服务启动后,可以通过http请求,向服务器的搜索项目提交一定格式的数据,生成搜索项目的索引

4 solr搜索项目加载数据并生成索引后,可以提供数据的全文检索服务

 

 






 

 
启动solr


1.windows解压solr.
2.启动命令(进入example目录):

  自定义solr项目:java -Dsolr.solr.home=atguigu -jar start.jar

  用默认搜索项目:java -jar start.jar




建立数据项目

 

 a.在example目录下创建atguigu文件夹;

  b.将/solr下的solr.xml拷贝到atguigu目录下;

  c.在atguigu下创建sku目录,并且在sku目录下创建confdata目录;



 

 d.将example\solr\collection1\core.properties文件拷贝到sku目录,修改name=sku;

  e.将example\solr\collection1\conf下的schema.xml、solrconfig.xml、elevate.xml 拷贝到example\atguigu\sku\conf下;

  f.配置schema.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<!--  
 This is the Solr schema file. This file should be named "schema.xml" and
 should be in the conf directory under the solr home
 (i.e. ./solr/conf/schema.xml by default) 
 or located where the classloader for the Solr webapp can find it.

 This example schema is the recommended starting point for users.
 It should be kept correct and concise, usable out-of-the-box.

 For more information, on how to customize this file, please see
 http://wiki.apache.org/solr/SchemaXml

 PERFORMANCE NOTE: this schema includes many optional features and should not
 be used for benchmarking.  To improve performance one could
  - set stored="false" for all fields possible (esp large fields) when you
    only need to search on the field but don't need to return the original
    value.
  - set indexed="false" if you don't need to search on the field, but only
    return the field as a result of searching on other indexed fields.
  - remove all unneeded copyField statements
  - for best index size and searching performance, set "index" to false
    for all general text fields, use copyField to copy them to the
    catchall "text" field, and use that for searching.
  - For maximum indexing performance, use the ConcurrentUpdateSolrServer
    java client.
  - Remember to run the JVM in server mode, and use a higher logging level
    that avoids logging every request
-->

<schema name="example" version="1.5">
 	<field name="_version_" type="long" indexed="true" stored="true"/>
	<field name="_root_" type="string" indexed="true" stored="false"/>
	   
   <field name="id" type="integer" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="shp_id" type="integer" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="jg" type="double" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="chjshj" type="date" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="sku_mch" type="string" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="kcdz" type="string" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="shp_tp" type="string" indexed="true" stored="true" required="false" multiValued="false" />     
   <field name="kc" type="integer" indexed="true" stored="true" required="false" multiValued="false" /> 
   <field name="sku_xl" type="long" indexed="true" stored="true" required="false" multiValued="false" />     
   	  <!—主键域-->
  
	<uniqueKey>id</uniqueKey>

	<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" />  
    <fieldtype name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true" />  
    <fieldtype name="integer" class="solr.IntField" omitNorms="true" />  
    <fieldtype name="long" class="solr.LongField" omitNorms="true" />  
    <fieldtype name="float" class="solr.FloatField" omitNorms="true" />  
    <fieldtype name="double" class="solr.DoubleField" omitNorms="true" />  
    <fieldtype name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true" />  

</schema>

g  修改solrconfig.xml

将<str name="df">text</str>全都替换成 <str name="df">sku_mch</str>
理由:找不到默认的在schema.xml的field的name为text,配置成找得到的才不报错
 

配置分词和其他

a.将IKAnalyzer-2012-4x.jar拷贝到example\solr-webapp\webapp\WEB-INF\lib下;

  b.在schema.xml文件中添加fieldType:

    IKAnalyzer-2012-4x.jar
 

<fieldType name="binary" class="solr.BinaryField">
    <fieldType name="text_ik" class="solr.TextField">
		<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
</fieldType>

使用该分词器时得这样配置:例如,把field的name为sku_mch的type改为 text_ik

 <field name="sku_mch" type="text_ik" indexed="true" stored="true" required="false" multiValued="false" />



 c.重启solr,用analysis做分词测试
 

导入数据到solr

  a.配置solr搜索项目的集合字段

  b.调用solr服务,导入数据





 

搜索项目

1 solor的api

2 springmvc和mybatis

3提供rest接口给交易系统检索访问

搜索方式

1 一般使用组合字段进行搜索

默认为关键字分词后的所有词语在组合字段中结果的并集

2 配置结果的交集和并集在字段中加入

<solrQueryParser defaultOperator="AND"/>

默认是并集:<solrQueryParser defaultOperator="OR"/>


组合字段搜索的配置
在schema.xml文件中添加

<!—复制域,不同字段检索结果取并集,检索复制域相当于检索所有复制域字段-->

 <field name="combine_item" type="text_ik" indexed="true" stored="true" required="true" multiValued="true" />
<copyField source="sku_mch" dest="combine_item"/>
<copyField source="kcdz" dest="combine_item"/>
<copyField source="jg" dest="combine_item"/>
<copyField source="sku_xl" dest="combine_item"/>



codeDemo演示

springmvc和mybatis
提供rest接口给交易系统检索访问

创建一个Maven项目mall_keywords

pom.xml

<dependency>
			<groupId>org.apache.solr</groupId>
			<artifactId>solr-solrj</artifactId>
			<version>4.10.1</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.37</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.2.4</version>
		</dependency>


		<!-- 4.SpringMVC -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>4.0.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1.3-b06</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.11</version>
		</dependency>


jdbcConfig.properties


driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/gmall?useUnicode=true&characterEncoding=UTF8
username=root
password=123456

mybatis-config.xml
 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="jdbcConfig.properties" />
   <environments default="development">
	<environment id="development">
		 <transactionManager type="JDBC"/>
		<dataSource type="POOLED">
			 <property name="driver" value="${driver}"></property>
			 <property name="url" value="${url}"></property>
			 <property name="username" value="${username}"></property>
			 <property name="password" value="${password}"></property>
		</dataSource>
	</environment>
</environments>
  <mappers>
  <package name="com/atguigu/mapper" /> 
  </mappers>
</configuration>


solr.properties

solr_sku=http://localhost:8983/solr/sku

 spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

   <!-- 4、启动注解 -->
	<mvc:annotation-driven />
	<mvc:default-servlet-handler />

	<!-- 1、包扫描 -->
	<context:component-scan base-package="com.atguigu.controller"></context:component-scan>
	<!-- 
	 
	<context:component-scan base-package="com.atguigu.controller"
		use-default-filters="false">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
		<context:include-filter type="annotation"
			expression="org.springframework.web.bind.annotation.ControllerAdvice" />
	</context:component-scan>
	-->
	<!-- 2、视图解析器 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

	<!-- 3、SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8" />
		<!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
		<property name="maxUploadSize" value="10240000" />
	</bean>

	

</beans>

web.xml
 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>mall_keywords</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

 KEYWORDS_T_MALL_SKU.java

package com.atguigu.bean;

import org.apache.solr.client.solrj.beans.Field;

public class KEYWORDS_T_MALL_SKU extends T_MALL_SKU{
	@Field("shp_tp")
	private String shp_tp;

	public String getShp_tp() {
		return shp_tp;
	}

	public void setShp_tp(String shp_tp) {
		this.shp_tp = shp_tp;
	}
	
	
	

}


T_MALL_SKU.java

package com.atguigu.bean;


import java.util.Date;

import org.apache.solr.client.solrj.beans.Field;

public class T_MALL_SKU {

	@Field("id")
	private int id;
	@Field("shp_id")
	private int shp_id;
	@Field("kc")
	private int kc;
	@Field("jg")
	private double jg;
	@Field("chjshj")
	private Date chjshj;
	@Field("sku_mch")
	private String sku_mch;
	@Field("kcdz")
	private String kcdz;
	@Field("sku_xl")
	private long sku_xl;

	public long getSku_xl() {
		return sku_xl;
	}

	public void setSku_xl(long sku_xl) {
		this.sku_xl = sku_xl;
	}

	public String getKcdz() {
		return kcdz;
	}

	public void setKcdz(String kcdz) {
		this.kcdz = kcdz;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getShp_id() {
		return shp_id;
	}

	public void setShp_id(int shp_id) {
		this.shp_id = shp_id;
	}

	public int getKc() {
		return kc;
	}

	public void setKc(int kc) {
		this.kc = kc;
	}

	public Date getChjshj() {
		return chjshj;
	}

	public void setChjshj(Date chjshj) {
		this.chjshj = chjshj;
	}

	public String getSku_mch() {
		return sku_mch;
	}

	public void setSku_mch(String sku_mch) {
		this.sku_mch = sku_mch;
	}

	public double getJg() {
		return jg;
	}

	public void setJg(double jg) {
		this.jg = jg;
	}

}


KeywordsController.java

package com.atguigu.controller;

import java.util.ArrayList;
import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.atguigu.bean.KEYWORDS_T_MALL_SKU;
import com.atguigu.util.MyPropertyUtil;

@Controller
public class KeywordsController {

	@RequestMapping(value = "keywords")
	@ResponseBody
	public List<KEYWORDS_T_MALL_SKU> keywords(String keywords) {
		List<KEYWORDS_T_MALL_SKU> list_sku = new ArrayList<KEYWORDS_T_MALL_SKU>();
		HttpSolrServer solr = new HttpSolrServer(MyPropertyUtil.getProperty("solr.properties", "solr_sku"));
		solr.setParser(new XMLResponseParser());
		SolrQuery solrQuery = new SolrQuery();
		solrQuery.setQuery("combine_item:" + keywords);
		solrQuery.setRows(50);
		QueryResponse query = null;
		try {
			query = solr.query(solrQuery);
		} catch (SolrServerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		list_sku = query.getBeans(KEYWORDS_T_MALL_SKU.class);
	
		return list_sku;
	}

}

MySqlSessionFactory.java

package com.atguigu.factory;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MySqlSessionFactory {

	public static SqlSessionFactory getMyF() {
		
		InputStream resourceAsStream = MySqlSessionFactory.class
				.getClassLoader().getResourceAsStream("mybatis-config.xml");
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder =  new SqlSessionFactoryBuilder();
		SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
		//这里最好实现成单例模式
		return sqlSessionFactory;
	}
}


ClassMapper.java

package com.atguigu.mapper;

import java.util.List;

import com.atguigu.bean.KEYWORDS_T_MALL_SKU;

public interface ClassMapper {

	List<KEYWORDS_T_MALL_SKU> select_list_by_flbh2(int flbh2);
}

ClassMapper.xml
 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  <mapper namespace="com.atguigu.mapper.ClassMapper">
  	<select id="select_list_by_flbh2" parameterType="int" resultMap="select_list_by_flbh2_map">
	select spu.shp_tp, sku.Id as sku_id, sku.* from t_mall_product spu, t_mall_sku sku
	where spu.Id = sku.shp_id
	and spu.pp_id = tm.Id
	and spu.flbh2 = #{flbh2}
	</select>
<resultMap type="com.atguigu.bean.KEYWORDS_T_MALL_SKU" id="select_list_by_flbh2_map" >
	<id column="sku_id" property="id" />
	
</resultMap>
  </mapper>

MyPropertyUtil.java

package com.atguigu.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class MyPropertyUtil {

	public static String getProperty(String pro, String key) {
		Properties properties = new Properties();
		InputStream resourceAsStream = MyPropertyUtil.class.getClassLoader().getResourceAsStream(pro);
		try {
			properties.load(resourceAsStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String property = properties.getProperty(key);
		return property;
	}
}

测试solr的api
Test.java

package com.atguigu.test;

import java.io.IOException;
import java.util.List;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.response.QueryResponse;

import com.atguigu.bean.KEYWORDS_T_MALL_SKU;
import com.atguigu.factory.MySqlSessionFactory;
import com.atguigu.mapper.ClassMapper;
import com.atguigu.util.MyPropertyUtil;

public class Test {

	public static void main(String[] args) throws SolrServerException, IOException {
		SqlSessionFactory myF = MySqlSessionFactory.getMyF();

		ClassMapper mapper = myF.openSession().getMapper(ClassMapper.class);

		List<KEYWORDS_T_MALL_SKU> list_sku = mapper.select_list_by_flbh2(28);
	
		System.out.println(list_sku);
		
		// 想solr中导入sku数据
		
		HttpSolrServer solrServer = new HttpSolrServer(MyPropertyUtil.getProperty("solr.properties", "solr_sku"));
		solrServer.setParser(new XMLResponseParser());
		solrServer.addBeans(list_sku);
		solrServer.commit();
		
		//进行搜索
		SolrQuery solrQuery = new SolrQuery();

        //如果进行组合字段搜索,那sku_mch应该改为combine_item
		solrQuery.setQuery("sku_mch:小明");
		solrQuery.setRows(50);

		QueryResponse query = solrServer.query(solrQuery);

		List<KEYWORDS_T_MALL_SKU> beans = query.getBeans(KEYWORDS_T_MALL_SKU.class);

		System.out.println(beans);
	}

}


第三方系统通过http进行调用
 

@RequestMapping("keywords")
	public String keywords(String keywords, ModelMap map) {
		//调用keywords的关键词查询接口
		String doGet = "";
		String keywords_url = MyPropertyUtil.getProperty("ws.properties", "keywords_url") + "?keywords=" + keywords;
		try { 
			doGet = MyHttpGetUtil.doGet(keywords_url);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		List<KEYWORDS_T_MALL_SKU> list_sku = MyJsonUtil.json_to_list(doGet, KEYWORDS_T_MALL_SKU.class);
		map.put("list_sku", list_sku);
		map.put("keywords", keywords);
		return "search";
	}

ws.properties

keywords_url=http://localhost:8888/mall_keywords/keywords.do

MyJsonUtil.java

package com.atguigu.util;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.atguigu.bean.T_MALL_SHOPPINGCAR;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import net.sf.json.JSONArray;

public class MyJsonUtil {

	public static void main(String[] args) throws UnsupportedEncodingException {
		List<T_MALL_SHOPPINGCAR> list_car = new ArrayList<T_MALL_SHOPPINGCAR>();

		for (int i = 0; i < 3; i++) {
			T_MALL_SHOPPINGCAR t_MALL_SHOPPINGCAR = new T_MALL_SHOPPINGCAR();
			t_MALL_SHOPPINGCAR.setSku_mch("商品" + i);
			t_MALL_SHOPPINGCAR.setSku_jg(i * 1000);
			list_car.add(t_MALL_SHOPPINGCAR);
		}

	}

	public static <T> String object_to_json(T t) {
		Gson gson = new Gson();

		String json = gson.toJson(t);

		try {
			json = URLEncoder.encode(json, "utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return json;
	}

	public static <T> T json_to_object(String json, Class<T> t) {

		try {
			json = URLDecoder.decode(json, "utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Gson gson = new Gson();

		T fromJson = gson.fromJson(json, t);

		return fromJson;
	}

	public static <T> List<T> json_to_list(String json, Class<T> t) {
		String decode = "";

		if (StringUtils.isBlank(json)) {
			return null;
		} else {
			try {
				decode = URLDecoder.decode(json, "utf-8");
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			JSONArray fromObject2 = JSONArray.fromObject(decode);

			List<T> list_array = (List<T>) JSONArray.toCollection(fromObject2, t);

			return list_array;
		}

	}

	public static <T> String list_to_json(List<T> list) {

		Gson gson = new Gson();
		String json = gson.toJson(list);

		try {
			json = URLEncoder.encode(json, "utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return json;

	}

}


添加HttpClient依赖

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>


MyHttpGetUtil.java

package com.atguigu.util;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;

public class MyHttpGetUtil {
	
	public static String doGet(String keywords_url) throws HttpException{
		HttpClient client = new HttpClient();  
        // 设置代理服务器地址和端口  
        // client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port);  
        // 使用GET方法,如果服务器需要通过HTTPS连接,那只需要将下面URL中的http换成https  
        HttpMethod method = new GetMethod(keywords_url);  
        // 使用POST方法  
        // HttpMethod method = new PostMethod("http://localhost:8080/SpringMVC/greeting?name=zhangshan";);  
        try {
			client.executeMethod(method);
			String str = method.getResponseBodyAsString();
			 method.releaseConnection();  
			return str;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			 method.releaseConnection();  
			return null;
		}  
       
	}
}



 

猜你喜欢

转载自blog.csdn.net/xiao__jia__jia/article/details/86507144
今日推荐