apache soap调用第三方webservice短信接口报错(本人小白,求大侠指教)

完整代码如下

 /** 接口target url */
    private static final String TARGET_URL  = "http://duanxin.51fzh.com:5566/XjxSendMsg.asmx?op=ImmediatelySendByMS";

    /** 接口xml命名空间*/
    private static final String NAMESPACE_URI = "http://tempuri.org/";

    /** 短信接口地址 */
    private static final String MSG_URL = "http://duanxin.51fzh.com:5566/";

    /** 请求调用的方法名称 */
    private static final String METHOD_NAME = "ImmediatelySendByMS";

    /** 输入参数sendSys为固定值xjxrzweb */
    private static final String SEND_SYS = "xjxrzweb";

    /** 发送用户:默认系统 */
    private static final String SEND_USER = "系统";

    /**
     * 请求短信接口,并返回调用信息
     * 
     * @param phoneNumber
     *            手机号码
     * @param content
     *            模板短信占位符的值,例如@1@=abc,
     *            如果后期有其他模板需要两个输入参数 就是"@1@=abc,@2@=def"
     * @param templateNo
     *            模板短信编号
     * @return String success:发送成功 fail:发送失败
     */
    public static String requestService(String phoneNumber, String content,
            String templateNo) {
        String result = "";
        try {
            URL url = new URL(MSG_URL);
            // 构造Call对象
            Call call =  new Call();
            call.setTargetObjectURI(TARGET_URL);
            call.setMethodName(METHOD_NAME);
            call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
            // 参数传递
            call.setParams(getParameter(phoneNumber, content, templateNo));
            // 发出调用
            Response resp = call.invoke(url, "");
            // 检查应答
            if (!resp.generatedFault()) {
                Parameter ret = resp.getReturnValue();
                result = ret.getValue().toString();
            } else {
                Fault fault = resp.getFault();
                System.out.println(" Fault Code = " + fault.getFaultCode());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }

    /**
     * 参数组织
     * @param phoneNumber
     *            手机号码
     * @param content
     *            模板短信占位符的值,例如@1@=abc,
     *            如果后期有其他模板需要两个输入参数 就是"@1@=abc,@2@=def"
     * @param templateNo
     *            模板短信编号
     * @return Vector<Parameter>
     *            线程安全性参数结合
     */
    private static  Vector<Parameter> getParameter(String phoneNumber, String content,
            String templateNo) {  
        Vector<Parameter> params = new Vector<Parameter>();
        params.addElement(new Parameter("phoneNumber", String.class,
                phoneNumber, null));
        params.addElement(new Parameter("content", String.class, content,
                null));
        params.addElement(new Parameter("sendSys", String.class, SEND_SYS,
                null));
        params.addElement(new Parameter("sendUser", String.class, SEND_USER,
                null));
        params.addElement(new Parameter("templateNo", String.class,
                templateNo, null));
        return params;  
    } 


    public static void main(String[] args) {
        System.out.println(requestService("14751608125", "@1@=12121",
                "JSM41168-0001"));
    }

错误:
SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html", must be: "text/xml".
试了很多方法都没有用

1个回答

只要是正规的第三方短信平台,有资质,有自己代码的,一般都ok,比如 卡洛思短信 安利下。q 10662187

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问