zoukankan      html  css  js  c++  java
  • 万能android调用webservice方法——参数类型不受限制

    说明:只是个例子,扩展性、复用性不好,只是提出一个思路,返回的XML解析代码写的也很烂
    聪明的你,拿来代码的时候,肯定能解决这些问题
    ===========================================
    关键代码:

    try {
    // 发帖机原理,模拟浏览器
    final String SERVER_URL ="http://10.40.15.11/Android/WebService.asmx"; // 定义需要获取的内容来源地址

    URL url
    =new URL(SERVER_URL);
    URLConnection con
    = url.openConnection();
    con.setDoOutput(
    true);
    con.setRequestProperty(
    "Pragma:", "no-cache");
    con.setRequestProperty(
    "Cache-Control", "no-cache");
    con.setRequestProperty(
    "Content-Type", "text/xml");

    OutputStreamWriter out
    =new OutputStreamWriter(con
    .getOutputStream());
    // 控件取值
    EditText eTextName = (EditText) findViewById(R.id.tbx_name);
    EditText eTextAge
    = (EditText) findViewById(R.id.tbx_age);
    String xmlInfo
    ="<?xml version=\"1.0\" encoding=\"utf-8\"?><soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\"><soap12:Body><ShowEntity xmlns=\"http://tempuri.org/\"><person><Name>"
    + URLEncoder.encode(eTextName.getText().toString())
    +"</Name><Age>"
    + eTextAge.getText().toString()
    +"</Age></person></ShowEntity></soap12:Body></soap12:Envelope>";
    // 发送
    out.write(new String(xmlInfo.getBytes("UTF-8")));
    out.flush();
    out.close();
    // 取返回值
    BufferedReader br =new BufferedReader(new InputStreamReader(con
    .getInputStream()));
    StringBuilder sBuilder
    =new StringBuilder();
    String line
    ="";
    for (line = br.readLine(); line !=null; line = br.readLine()) {
    sBuilder.append(line);
    }
    // 解析XML
    Pattern patternname = Pattern.compile("<Name>.*?</Name>");
    Matcher matchername
    = patternname.matcher(sBuilder.toString());
    if (matchername.find()) {
    String name
    = matchername.group();
    TextView lblname
    = (TextView) findViewById(R.id.lbl_name);
    lblname.setText(URLDecoder.decode(name.substring(name
    .indexOf(
    ">") +1, name.lastIndexOf("<"))));
    }

    Pattern patternage
    = Pattern.compile("<Age>.*?</Age>");
    Matcher matcherage
    = patternage.matcher(sBuilder.toString());
    if (matcherage.find()) {
    String age
    = matcherage.group();
    TextView lblage
    = (TextView) findViewById(R.id.lbl_age);
    lblage.setText(age.substring(age.indexOf(
    ">") +1, age
    .lastIndexOf(
    "<")));
    }

    }
    catch (Exception e) {
    String str
    = e.getMessage();
    }

    变量xmlInfo就是这里红线圈起来的地方

    服务器端:c#代码

    [WebMethod]
    public Person ShowEntity(Person person)
    {
    return person;
    }


    publicclass Person
    {
    publicstring Name { get; set; }

    publicint Age { get; set; }
    }
  • 相关阅读:
    mysql 批量kill locked 进程
    mysql大量locked的一个案例
    Nodejs微信开发使用wechat-api回复多条消息
    nodejs获取ASP.Net WebAPI(IIS Windows验证)
    Nodejs微信开发
    Luis创建与发布
    Bot Framework测试
    使用httpclient异步调用WebAPI接口
    sonarQube Github pull request扫描代码
    sonarQube6.1 升级至6.2
  • 原文地址:https://www.cnblogs.com/gzggyy/p/2086159.html
Copyright © 2011-2022 走看看