java客户端调用Servlet

可以通过java客户端调用Servlet。因为,说白了,浏览器调用Servlet无非就是通过http协议,而java中通过URL就可以指定连接协议,并获得HttpURLConnection对象,同服务器建立连接,进行交互。不过,估计lz得调整一下返回结果,不能是通常的页面了,而是有含义的可解析的字符串。


package myProject;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
 
import org.json.JSONException;
import org.json.JSONObject;
 
public class TestServlet {
     /**
      * @param args
      */
     private static String URL = "http://localhsot:8080/plugins/yundada/getinfotypelist" ;
 
     public static void main(String[] args) throws JSONException {
 
         // Post Data 为Form提交的内容。
         JSONObject obj = new JSONObject();
         obj.put( "authtoken" , "2548c2f2-7680-430c-a0b1-9fba835acb84" );
         String postData = obj.toString();
         String html = GetResponseDataByID(URL, postData);
         JSONObject var = new JSONObject(html);
         System.out.println(var.toString());
     }
 
     public static void PrintStrs(String[] str) {
         for (String s : str) {
             System.out.print(s + "," );
         }
         System.out.println();
     }
 
     public static String GetResponseDataByID(String url, String postData) {
         String data = null ;
         try {
             URL dataUrl = new URL(url);
             HttpURLConnection con = (HttpURLConnection) dataUrl
                     .openConnection();
             con.setRequestMethod( "POST" );
             con.setRequestProperty( "Proxy-Connection" , "Keep-Alive" );
             con.setDoOutput( true );
             con.setDoInput( true );
 
             OutputStream os = con.getOutputStream();
             DataOutputStream dos = new DataOutputStream(os);
             dos.write(postData.getBytes());
             dos.flush();
             dos.close();
 
             InputStream is = con.getInputStream();
             DataInputStream dis = new DataInputStream(is);
             byte d[] = new byte [dis.available()];
             dis.read(d);
             data = new String(d);
             con.disconnect();
         } catch (Exception ex) {
             ex.printStackTrace();
         }
         return data;
     }
}
关于Httpservlet不能自己创建的解释:

你仔细看看API,HttpServletRequest是可以自己创建的么?他给你提供了构造方法了么? 
API这样写道:public abstract interface HttpServletRequest 
extends ServletRequest 

你准备怎么样?integerface你也能自己new出来?HttpServletRequest怎么产生的?那是web容器动态赋值的,不是硬梆梆可以new的,servlet不是一般的java类,岂能随便乱调?要不为什么说struts1难以测试,要是你这个思路行得通,那struts1不就可以测试了?那干嘛还有struts2跑出来整个和servlet-api分离? 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值