本站首页    管理页面    写新日志    退出


«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7649287
建立时间:2006年5月29日




[设计模式]简单整理一下调用接口和被调用接口的方法
软件技术

lhwork 发表于 2006/9/18 9:54:32

    我们公司是做通信行业的,所以调用接口和被调接口是经常的事,所以把这方面的东西总结一下,以便自己和大家一起温习一下:    做接口这个我们这边做的比较简单,调用别人的接口主要是调用Servlet或者Action、JSP,我们这边有可能是JAVA APPLICATION 也可能是WEB程序,参数主要是XML格式的字符串。下面看一下,调用别人接口的时候用法。 URL url = new URL ("别人提供的URL地址");URLConnection connection = url.openConnection();connection.connect();StringBuffer XmlParam =new StringBuffer();XmlParam.append("<?xml version='1.0'?>\n"); XmlParam.append("<Love>\n"); XmlParam.append("<PhoneType>1</PhoneType>\n"); XmlParam.append("<Phone>12345678912</Phone>\n"); XmlParam.append("<Content>test!!</Content>\n"); XmlParam.append("</Love>\n");PrintWriter out = new PrintWriter(connection.getOutputStream());//取得输出流out.print(XmlParam.toString());//把参数打出去out.close(); InputStream urlStream = connection.getInputStream();//取得接口回传的值,定义好的协议。再对这个输入流进行处理。connection.close();connection = null; 自己定义接口被别人调用的时候,就是取得别人传过来的参数,进行解析处理,完了之后把所相应的结果传送给调用者。如果是XML格式的,可以用XML解析器进行解析,我把这个解析类放在后面。InputStream in = request.getInputStream(); //取得用户传过来的输入流XmlParser parser = new XmlParser(in); //用构造器,构造一个XML解析器,,构造器在后面有详细说明String phoneType = "";String phone = "";String content = "";String url = "";phoneType = parser.getElement("PhoneType"); //得到用户传过来的PhoneType节点的值phone = parser.getElement("Phone"); //得到用户传过来的Phone节点的值content = parser.getElement("Content"); //得到用户传过来的Content节点的值这样调用者传过来的参数就取得了。对它进行处理吧。把处理结果再传给调用者。URL url = new URL (url);URLConnection connection = url.openConnection();connection.connect();PrintWriter out = new PrintWriter(connection.getOutputStream());//取得输出流out.print(处理的结果);//把参数打出去out.close();connection.close();connection = null;   XmlParser的简单应用方法package com.xgll.util;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.StringTokenizer; import org.jdom.Document;import org.jdom.Element;import org.jdom.Namespace;import org.jdom.input.SAXBuilder;import org.jdom.output.XMLOutputter; import com.xgll.util.Log;  * <p>Title: XML文档解析器</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: c-platform </p> * @author wujiaqian * @version 1.0 */public class XmlParser{   private static String logName = "XmlParser.log";    /**     * 构造器     * @param in, InputStream     */    public XmlParser(InputStream in)    {        try        {            propertyCache = new HashMap();            SAXBuilder builder = new SAXBuilder();            doc = builder.build(in);        }        catch (Exception e)        {            Log.printError(e,"", "以输入流构造解析器失败", logName);        }    }     /**     * 构造器     * @param fileName, 文件名     */    public XmlParser(String fileName)    {        propertyCache = new HashMap();        file = new File(fileName);        try        {            SAXBuilder builder = new SAXBuilder();            doc = builder.build(file);        }        catch (Exception e)        {            Log.printError(e,"", "以文件构造解析器失败", logName);        }    }     /**     * 获得节点的值     * @param name, 节点标签名     * @return String     */    public String getElement(String name)    {        if (propertyCache.containsKey(name))        {            return (String) propertyCache.get(name);        }        Element element = findElement(parsePropertyName(name));        if (element == null)        {            return null;        }        String value = element.getText();         if (value.equals(""))        {            return null;        }        else        {            value = value.trim();            propertyCache.put(name, value);            return value;        }    }         /**     * 分析节点名     * @param name, 节点名     * @return String Array     */    private String[] parsePropertyName(String name)    {        int size = 1;        for (int i = 0; i < name.length(); i++)        {            if (name.charAt(i) == '.')            {                size++;            }        }         String propName[] = new String[size];        StringTokenizer tokenizer = new StringTokenizer(name, ".");        for (int i = 0; tokenizer.hasMoreTokens(); i++)        {            propName[i] = tokenizer.nextToken();        }         return propName;    }     private File file;     private Document doc;     private Map propertyCache;     private static String DSMP_NAMESPACE = "http://www.monternet.com/dsmp/schemas/";}


阅读全文(2625) | 回复(1) | 编辑 | 精华
 


回复:简单整理一下调用接口和被调用接口的方法
软件技术

tuzi(游客)发表评论于2007/4/19 0:18:49

谢谢,看到我要的


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 1.023 second(s), page refreshed 144795176 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号