今日、クライアントからサーバーに渡された文字列パラメータ内の単純な%
がBad Request 400
という結果になったことがわかりました。通常、文字列パラメータはWebサービスで自動的にエスケープされますか?
私はWebサービスに関する基本知識を持っているので、これは正常な動作かどうかわかりません。私は何かを逃しましたか(文字列を逃れることに対する私の責任はありますか?
クライアントコード:
@WebMethod(operationName = "push", action = "urn:Push")
public boolean push(String msg);
Serverコード:
@XmlRootElement(name = "push", namespace = "http://ws.something.com/")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "push", namespace = "http://ws.something.com/", propOrder = {"arg0"})
public class Push {
@XmlElement(name = "arg0")
private java.lang.String arg0;
public java.lang.String getArg0() {
return this.arg0;
}
public void setArg0(java.lang.String newArg0) {
this.arg0 = newArg0;
}
}
注:
このクライアント/サーバのペアでも内部%
で当社の開発ホストサーバー上でローカルに正常に動作します文字列パラメータただし、別のホストサーバー上にはBad Request 400
が表示されます。したがって、サーバーのホスト環境に関連する可能性があります。もしそうなら、私はこれを引き起こす可能性のあることにヒントを持ちたいと思います。
エンコードの問題の場合、他のすべての文字が正しく転送されるのはなぜですか? – ForguesR
文字セットによって異なります。サポートされている文字セットに含まれる場合は正しく出力されます。英語のアルファベットで問題に直面することはほとんどありません。特殊文字やその他の言語文字は、文字セットが間違っていると奇妙な結果をもたらします。私はSystemからデフォルトの文字セットを取得できると思います。あなたはそれをgoogleすることができます。確認する時間があればチェックして対応します。 – Abinash
私はフランス語の文字を使用しており、すべてが正しく転送されています。 – ForguesR