0

バックグラウンド:

アプレットから呼び出されたクラスからすべて同じサーバー上のサーブレットにデータを送信しようとしています。

public class SendData {
    public void send() {
        URL url = new URL("http://address.edu/folder/package/Servlet.class");
        URLConnection conn = url.openConnection();
        conn.setUseCaches(false);
        conn.setDoInput(true);
        conn.setDoOutput(true);
        ObjectOutputStream objout = new ObjectOutputStream(conn.getOutputStream());
        Object data = new Object();
        objout.writeObject(data);
        objout.flush();
        objout.close();
}}

サーブレットは次のようになります。

public class Servlet extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
        ObjectInputStream objin = new ObjectInputStream(req.getInputStream());
        Object input = objin.readObject();
        objin.close();
        resp.setStatus(HttpServletResponse.SC_OK);
        ...// do other things
}}

問題:

返されるエラーはですjava.io.IOException: Server returned HTTP response code: 405 for URL: http://address.edu/folder/Servlet.class。私は学校のサーバーを使用しており、100%確信はありませんが、サーバーがdoPostメソッドを許可しているとは思いません。

これを回避する方法はありますか?アクセスを許可するユーザー名とパスワードを指定した場合、ftp経由でservlet.classに接続できますか?私はこれを完全に始めたばかりなので、アドバイス/提案をいただければ幸いです。

編集:web.xmlを追加しました

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.5"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>package.Servlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/Servlet</url-pattern>
  </servlet-mapping>
</web-app>
4

1 に答える 1

0

サーバー上ですべてが正しく構成されていると仮定すると(web.xml、URLマッピングなど)、クライアントでPOSTメソッドを使用するようにも指定する必要があります。

URLへのURLConnectionhttp://は、デフォルトでGETメソッドを使用します。

このリクエストが常にHTTPリクエストであることが確実な場合は、にキャストHttpURLConnectionできます。これにより、リクエストメソッドを設定できます。

  URL url = new URL("http://address.edu/folder/Servlet.class");
  conn = (HttpURLConnection)url.openConnection();
  conn.setRequestMethod("POST");
  ...
于 2012-12-06T13:00:29.633 に答える