0

http ポスト経由で大文字のヘッダーを送信する必要があります。物語の最初の部分はここで説明されました。今度はソケットの時間です。:)

Socket s = new Socket(InetAddress.getByName("localhost"), 8080);
PrintWriter pw = new PrintWriter(s.getOutputStream());
//      PrintStream pw = System.out;
pw.println("POST /test-servlet/TestServlet HTTP/1.0");
String params = "key1=value1&key2=value2";
pw.println("accept = text/xml");
pw.println("accept-language: ru");
pw.println("SOAPAction: requestCreditBureau");
pw.println("eif: 3");
pw.println("host: localhost");
pw.println("content-length: " + params.getBytes().length);
pw.println();
pw.println(params);
pw.println();
pw.flush();

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while((t = br.readLine()) != null) System.out.println(t);
br.close();

ここには 2 つの問題があります。

  1. うまくいきません。:) サーバーのサーブレット受信:

ワークフロー = TSM \ soapaction = requestCreditBureau eif = 3

  1. サーバーの HttpServletRequest にはパラメーターはなく、ヘッダーのみです。
4

2 に答える 2

1

このprintln()メソッドは、システムの行区切り記号を使用して改行を送信します。HTTP では、\r\n行区切り記号として を厳密に使用することが定義されています。したがって、改行をハードコードする必要があります。

pw.print("SOAPAction: requestCreditBureau\r\n");
pw.print("eif: 3\r\n");
pw.print("host: localhost\r\n");
pw.print("content-length: " + params.getBytes().length + "\r\n");
pw.print("\r\n");

java.net.HttpURLConnectionHTTP プロトコルを自分で実装する代わりに使用することを検討してください。

于 2013-04-24T13:31:04.207 に答える
0

ありがとう!問題は、私が tomcat7 を使用したことでした。桟橋を使用してもそのような問題はありません。

于 2013-04-24T15:54:55.197 に答える