java客户端调用Servlet

本文介绍了一种使用Java客户端调用Servlet的方法,通过HTTP协议建立连接并传递JSON格式的数据,实现了与服务器的有效交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以通过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分离? 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值