wuyz_bbcare 2017-06-20 08:46 采纳率: 0%
浏览 5133
已结题

java远程调用.net webservice服务,服务端接收到了请求,但是接收到参数的为null

我用java远程调用.net webservice服务,服务端接收到了请求,但是服务端接收到参数的为null呢?
public String callServiceEsbGFY(BsServiceDict bsdVo, String custIdValue, Map servParam)
throws SysException, AppException {
//System.out.println("servParam"+servParam.toString());
String retMsg = null;
String serviveCode = (String) servParam.get("code");
servParam.remove("code");
//String soapActionURI = "http://tempuri.org/selectVIN";

//处理入参
String str="<?xml version=\"1.0\" encoding=\"gb2312\"?> Set keys = servParam.keySet();
if(keys != null) {
Iterator iterator = keys.iterator();
while(iterator.hasNext()) {
String key =iterator.next();
str=str+key+"="+"\""+servParam.get(key)+"\""+" ";
}
str=str+">";
}
String endpoint =bsdVo.getServiceAddress();
String methodStr = bsdVo.getMethodName();
String input = bsdVo.getInParam();
try {
input=input.replace(Constants.STRING_CHARACTER_GFY, str);
//用户密码替换
String password = ToolUtil.MD5Encrept(Constants.STRING_USERPASSWORD_INFO, Constants.INTEGER_FORMD5_32);
input=input.replace(Constants.STRING_USERPASSWORD_GFY, password);
//当前时间替换
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
String dateFormat = df.format(date);
log.info("dateFormat@@@@@@"+dateFormat);
input=input.replace(Constants.STRING_CREATETIMEINFO_GFY, dateFormat);
/**
1、A = 变量用户MD5密钥值转为UTF8字符串
*2、B = 变量报文时间戳值转为UTF8字符串
*3、C = 变量业务逻辑
*3、D = A与B异或运算,运算时计算长度以A和B值中字符长度短的为准,将D的值转为BASE64字符串
*
/
String baseInfo = ToolUtil.twoStringXor(password,dateFormat);
log.info("baseInfo#######333 : "+baseInfo);

        //计算最后签名的值
        String character = ToolUtil.changeToSHA(str,Constants.STRING_FORHASHCODE_256);
        String sign =  ToolUtil.changeToSHA(character+baseInfo,Constants.STRING_FORHASHCODE_256);
        //将模板中的签名替换掉
        input=input.replace(Constants.STRING_SIGNINPUT_GFY, sign);
        //替换调用接口code
        log.info("serviveCode$$$$$$$$$$$$"+serviveCode);
        input=input.replace(Constants.STRING_SERVICECODE_GFY, serviveCode);
        log.info("111111111111111111111111111111111111111111111111111111111111");
        log.info("input=="+input);
        log.info("222222222222222222222222222222222222222222222222222222222222");
        AxisProperties.setProperty("axis.socketSecureFactory",  "org.apache.axis.components.net.SunFakeTrustSocketFactory"); 
        org.apache.axis.client.Service service = new org.apache.axis.client.Service();  
        Call call =  (Call) service.createCall();
        String endpoint1 = "http://IPMCH.ESB.TopSchemaV2";
        call.setTargetEndpointAddress (new java.net.URL(endpoint));
        call.setOperationName(new QName( endpoint1 , methodStr));
        call.setUseSOAPAction(true);  
        call.setSOAPActionURI("http://IPMCH.ESB.TopSchemaV2/CallESB");
        call.addParameter( "arg0", org.apache.axis.encoding.XMLType.XSD_STRING,   javax.xml.rpc.ParameterMode.IN); 
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
        retMsg = (String) call.invoke(new Object[] {input} );
    } catch (Exception e) {
        retMsg = "10000";
        e.printStackTrace();
        throw new SysException("","XmlException:OrderReceive.buildOrderReceiveXML():"+e.getMessage(),e);
    }
    return retMsg;

}
  • 写回答

2条回答 默认 最新

  • qq_37378394 2017-06-20 09:07
    关注

    网络请求是要另外开一个子线程去去请求的,不能在主线程中进行网络请求,否则会返回null

    评论

报告相同问题?

悬赏问题

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