今天按时间看了下android通过http的get/post两种方法访问服务器的知识。
通过Android真机访问web应用的一个servlet,
URL url = new URL("http://localhost:8080/testShooping/sg");
但一直报 localhost/127.0.0.1:8080 - Connection refused
上网查:原来android模拟器(simulator)把它自己作为了localhost,也就是说,代码中使用localhost或者127.0.0.1来访问,都是访问模拟器自己
解决方法:cmd——》ipconfig/all——》获得本机ip——》修改URL url = new URL("http://本机ip:8080/Test1/servlet/ServletDemo");但试了也不行。
再上网查:模拟器默认10.0.2.2是本机地址,于是把地址改成10.0.2.2还是不行。
郁闷中。。。
突然想到它都说模拟器呢,那就不用真机了,用模拟器试试。
cao,一试模拟器用第一个方法的局域网地址192.168.2.57和第二个方法10.0.2.2都行,搞了我这么久,郁闷。。。
后来又试了真机和模拟器访问www.baidu.com都行,都有数据返回。
我是使用HttpURLConnection接口的,get/post方法网上一大把就不在这里写了。
web项目只有一个servlet,超简单:
public class ShowGoodsClServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
System.out.println("username:"+request.getParameter("username"));
response.getOutputStream().print("ok");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
不过要记得在web.xml中配置:
<servlet>
<servlet-name>sg</servlet-name>
<servlet-class>com.sp.servlet.ShowGoodsClServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sg</servlet-name>
<url-pattern>/sg</url-pattern>
</servlet-mapping>