네이트온 SMS문자 보내기를 httpclient로 하려는 도중 post방식으로 넘기는 값이 특수 문자일경우
자동으로 인코딩되기 때문에 네이트온에서 제대로 먹혀 들지 않습니다.
예를 들어 post방식으로 패킷 전달시 Body에 param=%3fTICKET%3d&id=mcshin 이와 같이 보내면
param의 value값인 "%3fTICKET3d%"이 그대로 전송이 되지 않고 "%253fTICKET3d%25"으로 인코딩되어 전송
됩니다.
따라서 httpclient 소스의 EncodingUtil.java를 아래와 같이 수정하면 됩니다. (httpclient 3.1 기준)
private static String doFormUrlEncode(NameValuePair[] pairs, String charset) throws UnsupportedEncodingException {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < pairs.length; i++) {
URLCodec codec = new URLCodec();
NameValuePair pair = pairs[i];
if (pair.getName() == null)
continue;
if (i > 0)
buf.append("&");
// buf.append(codec.encode(pair.getName(), charset));
buf.append(pair.getName());
buf.append("=");
if (pair.getValue() != null) {
// buf.append(codec.encode(pair.getValue(), charset));
buf.append(pair.getValue());
}
}
return buf.toString();
}
위와 같이 codec.encode(pair.getName(), charset) 에서 encode를 하지 않도록 변경하면 됩니다.
'Programming > Java' 카테고리의 다른 글
스프링 Maven BOM Dependency (0) | 2014.06.04 |
---|---|
스프링 ContentNegotiatingViewResolver (0) | 2014.06.04 |
slf4j api 사용 방법 (0) | 2014.06.04 |