Java 将字节[]从独立main发送到servlet

Java 将字节[]从独立main发送到servlet,java,servlets,stream,Java,Servlets,Stream,如何将字节[]从测试客户机(独立)发送到Servlet 这是我的代码: public class Sent { public static void main(String[] args) throws Exception { URL url = new URL("http://mydomain.com:8080/demo/myServlet"); HttpURLConnection oc = (HttpURLConnection)url.open

如何将
字节[]
从测试客户机(独立)发送到Servlet

这是我的代码:

public class Sent
{
    public static void main(String[] args) throws Exception
    {
        URL url = new URL("http://mydomain.com:8080/demo/myServlet");
        HttpURLConnection oc = (HttpURLConnection)url.openConnection(); 

        oc.setDoOutput(true);
        oc.setUseCaches(false);

        OutputStream os = oc.getOutputStream();     
        os.write("Hello world".getBytes());
        os.flush();     
        os.close();
    }
}
这是我的servlet:

@WebServlet("/myServlet")
public class MyServlet extends HttpServlet
{
    private static final long serialVersionUID=1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
    {
        ServletInputStream sis = request.getInputStream();
        int c;
        while( (c=sis.read())>=0 )
        {
            System.out.println((char)c);
        }

        sis.close();
    }
}
有了这段代码,servlet什么也不做;我的意思是,它不会在控制台上写任何东西。。。救命啊

谢谢。

当你打电话时

oc.setDoOutput(true);
HttpURLConnection
假定您正在尝试发送POST请求。您没有POST请求处理程序,即no
doPost()
,因此您继承了
HttpServlet
的实现,该实现返回一个
405不允许的方法
响应。如果你这样做了,你会看到的

System.out.println(oc.getResponseCode());

而是将您的
doGet
更改为
doPost
。或者两者兼而有之。

尝试从你的代码> HTTPURLCONNECT/<代码>对象中获得响应代码。@ USSR327 1621考虑接受答案,除非有一些你不理解的东西。@ USER 327?1621你能编辑你的问题并添加你所做的所有更改吗?它适合我。@user3271621在一个相关的注释中,小心使用
byte[]
String
。使用适当的字符集。嗨,Sotirios,还有一件事:使用doGet方法的servlet可以接收然后发送来自HttpURLConnection的字节吗?我这样问是因为要通过HttpURLConnection发送字节,首先我需要调用:setDoOutput(true);这个调用将请求路由到doPost方法。有没有办法做到这一点?谢谢最后给出了通过requestProperty传递密钥的解决方案。因此,使用doPost和doGet方法的单个servlet可以处理广泛的过程。doPost方法只是从客户端读取对象流,而doGet方法只是将对象流发送到客户端。非常感谢,你的评论对我很有帮助。谢谢