2016-09-09 1 views
4

오늘 클라이언트에서 서버로 전달 된 문자열 매개 변수 내의 간단한 %Bad Request 400이라는 것을 알게되었습니다.대개 웹 서비스에서 문자열 매개 변수가 자동으로 이스케이프됩니까?

웹 서비스에 대한 기본 지식이 있으므로 정상적인 동작인지 여부는 알 수 없습니다. 내가 뭔가를 놓쳤습니까 (문자열을 피하는 것이 나의 책임입니까?) 아니면 다른 곳을 봐야합니까?

클라이언트 코드 :

@WebMethod(operationName = "push", action = "urn:Push") 
public boolean push(String msg); 

서버 코드 :

@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이됩니다. 따라서 서버 호스트 환경과 관련 될 수 있습니다. 그렇다면이 문제의 원인에 대한 힌트를 얻고 싶습니다.

답변

1

대부분의 경우 기본 캐릭터 세트는 당신의 환경에서 다른입니다. 이 샘플을 사용해보십시오.

String test = new String("%"); 
    System.out.println(test); 
    byte[] byteArray = test.getBytes("UTF-16"); 
    test = new String(byteArray); 
    System.out.println(test); 

아주 초보적이지만 문자 인코딩이 결과에 어떤 영향을 미치는지에 대한 아이디어를 얻을 수 있습니다.

자세한 내용을 확인하십시오. https://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html

+0

인코딩 문제인 경우 다른 모든 문자가 올바르게 전송되는 이유는 무엇입니까? – ForguesR

+0

문자 집합에 따라 다릅니다. 지원되는 charset에 포함되면 제대로 출력됩니다. 영어 알파벳 문제가 발생할 가능성은 거의 없습니다. 특수 문자 또는 다른 언어 문자는 charset이 잘못된 경우 이상한 결과를 제공합니다. 시스템에서 기본 문자 집합을 얻을 수 있다고 생각합니다. 너 그거 할 수있어. 나는 점검 할 시간이 있는지 확인하고 응답 할 것이다. – Abinash

+0

나는 프랑스어 문자를 사용하며 모두 제대로 전송됩니다. – ForguesR

관련 문제