Mr_bullshit 2016-06-16 07:20
浏览 1522

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".
试了很多方法都没有用

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!