public class SendMeaasge {
private static String namespace;
private static String methodName;
private static String wsdlLocation;
private String soapResponseData;
static {
namespace = Code.SMSNAMESPACE;
methodName = Code.SMSMETHOD;
wsdlLocation = Code.SMSWSDlLOCATION;
}
/* public SendMeaasge(String namespace, String methodName,
String wsdlLocation) {
this.namespace = namespace;
this.methodName = methodName;
this.wsdlLocation = wsdlLocation;
}*/
private static SendMeaasge sendMessage=null;
public synchronized static SendMeaasge getInstance() {
if (sendMessage == null) {
sendMessage = new SendMeaasge();
}
return sendMessage;
}
private SendMeaasge() {
super();
}
private int invoke(Map<String, String> patameterMap) throws Exception {
PostMethod postMethod = new PostMethod(wsdlLocation);
String soapRequestData = buildRequestData(patameterMap);
byte[] bytes = soapRequestData.getBytes("utf-8");
InputStream inputStream = new ByteArrayInputStream(bytes, 0,
bytes.length);
//postMethod.setHeader("Content-type", " text/xml; charset=utf-8");
RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,
bytes.length, "text/xml; charset=utf-8");
postMethod.setRequestEntity(requestEntity);
HttpClient httpClient = new HttpClient();
int statusCode = httpClient.executeMethod(postMethod);
BufferedReader reader = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream()));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while((str = reader.readLine())!=null){
stringBuffer.append(str);
}
soapResponseData = stringBuffer.toString();
//soapResponseData = postMethod.getResponseBodyAsString();
return statusCode;
}
private String buildRequestData(Map<String, String> patameterMap) {
//String str=this.makeSoapRequestXml(namespace,methodName);
StringBuffer soapRequestData = new StringBuffer();
soapRequestData.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
soapRequestData.append("<v:Envelope xmlns:v=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:n0=\"")
.append(this.namespace).append("\"><v:Header /><v:Body><n0:")
.append(this.methodName).append(">");
Set<String> nameSet = patameterMap.keySet();
for (String name : nameSet) {
soapRequestData.append("<" + name + ">" + patameterMap.get(name)
+ "</" + name + ">");
}
soapRequestData.append("</n0:").append(this.methodName).append("></v:Body></v:Envelope>");
return soapRequestData.toString();
}
public int sendMessage(String ... args) throws Exception{
//SendMeaasge send=new SendMeaasge(Code.SMSNAMESPACE, Code.SMSMETHOD, Code.SMSWSDlLOCATION);
Map<String, String> patameterMap = new HashMap<String, String>();
for(int i=0;i<args.length;i++){
patameterMap.put("arg"+i, args[0]);
}
int statusCode = sendMessage.invoke(patameterMap);
return statusCode;
}
}