c# webservice
内容是返回一个ds。
我们都知道返回的webservice 是以xml文件的形式展现给我们的。
dataset 值c#里的数据集 好比与table集合
webservice 方法里面是这样处理dataset ds的 。
如果
return ds;
则在web浏览器 访问是这种形式的:<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns="http://www.digital-star.com.cn/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="Table">
- <xs:complexType>
- <xs:sequence>
<xs:element name="人员编号" type="xs:string" minOccurs="0" />
<xs:element name="中文姓名" type="xs:string" minOccurs="0" />
<xs:element name="撤销时间" type="xs:string" minOccurs="0" />
<xs:element name="相片" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <Table diffgr:id="Table1" msdata:rowOrder="0">
<人员编号>123465345</人员编号>
<中文姓名>张良</中文姓名>
<英文姓名 />
<别名或绰号 />
<性别>1</性别>
<出生日期>2009-01-08T10:10:39+08:00</出生日期>
<移交地址省市县区>张家口</移交地址省市县区>
<移交地址详细地址>潍坊市</移交地址详细地址>
<撤销时间>19520827175518</撤销时间>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet> 如果处理ds 则返回:
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary> 处理的方法是这样的 MeoryStream ms=new MemoryStream();
XmlSerializer ser = new XmlSerializer(typeof(DateSet));
ser.Serialize(ms,ds);
return CompressionHelper.Compress(buffer); CompressionHelper.Compress(byte[] bytesToCompress){//方法内容:
MeoryStream ms=new MemoryStream();
Stream s = OUtputStream(ms);
s.Write(bytesToCompress,0,bytesToCompress.Length);
s.Close();
retrun ms.ToArray();
}
问题:
我现在要把
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>
返回的结果给解出来
webservice 是不变的。我要在java程序上面解返回的xml文件
也就是我怎么处理
H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==
这个。。
是被压缩了。
我如何的处理解压并且在java 或者J2ME 处理成的是dataset的形式!
注:C# webservice 不变 默认的返回就是
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>
我要处理这个!
高分给出。希望能够解决
内容是返回一个ds。
我们都知道返回的webservice 是以xml文件的形式展现给我们的。
dataset 值c#里的数据集 好比与table集合
webservice 方法里面是这样处理dataset ds的 。
如果
return ds;
则在web浏览器 访问是这种形式的:<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns="http://www.digital-star.com.cn/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="Table">
- <xs:complexType>
- <xs:sequence>
<xs:element name="人员编号" type="xs:string" minOccurs="0" />
<xs:element name="中文姓名" type="xs:string" minOccurs="0" />
<xs:element name="撤销时间" type="xs:string" minOccurs="0" />
<xs:element name="相片" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <Table diffgr:id="Table1" msdata:rowOrder="0">
<人员编号>123465345</人员编号>
<中文姓名>张良</中文姓名>
<英文姓名 />
<别名或绰号 />
<性别>1</性别>
<出生日期>2009-01-08T10:10:39+08:00</出生日期>
<移交地址省市县区>张家口</移交地址省市县区>
<移交地址详细地址>潍坊市</移交地址详细地址>
<撤销时间>19520827175518</撤销时间>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet> 如果处理ds 则返回:
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary> 处理的方法是这样的 MeoryStream ms=new MemoryStream();
XmlSerializer ser = new XmlSerializer(typeof(DateSet));
ser.Serialize(ms,ds);
return CompressionHelper.Compress(buffer); CompressionHelper.Compress(byte[] bytesToCompress){//方法内容:
MeoryStream ms=new MemoryStream();
Stream s = OUtputStream(ms);
s.Write(bytesToCompress,0,bytesToCompress.Length);
s.Close();
retrun ms.ToArray();
}
问题:
我现在要把
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>
返回的结果给解出来
webservice 是不变的。我要在java程序上面解返回的xml文件
也就是我怎么处理
H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==
这个。。
是被压缩了。
我如何的处理解压并且在java 或者J2ME 处理成的是dataset的形式!
注:C# webservice 不变 默认的返回就是
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>
我要处理这个!
高分给出。希望能够解决
解决方案 »
- solr添加庖丁解牛
- 在线编辑器fckeditor的文件上传怎么弄?
- MyEclipse中Tomcat无法启动
- 数据导入/导出中出现的问题
- jacob1.9+jdk1.5,怎么把一个存储htm页面内容的字符串转化为word识别的,因为是直接替换word内容,不转化就会在word显示<table><tr>等标签
- 疑惑不解之《初学Hibernate 》~~~
- 有没有正在或已经学会使用SunAppServer的牛人啊来交流一下经验
- java中如何使用资源文件?java中怎样实现支持多国语言?
- 谁来帮助我!多线程实现矩阵相乘的问题!(分不够再加)
- 请问怎么找到weblogic6.1的petstore的例子?
- Hql语句不出现错误!
- dao属于后台服务层?
byte[] test = org.apache.commons.codec.binary.Base64
.decodeBase64(data.getBytes());
2. 至于怎么解析
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>A)如果response的结构比较复杂,且c#有response的xsd schema,你可以用jaxb做unmarshal
B) 如果仅仅为了读这个base64Binary,可以直接用正则表达式:String pos_regex = "base64Binary>(.+?)<";
Pattern POS_PATTERN = Pattern.compile(pos_regex);
Matcher match = POS_PATTERN.matcher(xmlresp);
if (match.find()) {
return match.group(1);
} else {
return new String("");
}
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>[code]
我想把这个转为
[code=XML]<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns="http://www.digital-star.com.cn/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="Table">
- <xs:complexType>
- <xs:sequence>
<xs:element name="人员编号" type="xs:string" minOccurs="0" />
<xs:element name="中文姓名" type="xs:string" minOccurs="0" />
<xs:element name="撤销时间" type="xs:string" minOccurs="0" />
<xs:element name="相片" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <Table diffgr:id="Table1" msdata:rowOrder="0">
<人员编号>123465345</人员编号>
<中文姓名>张良</中文姓名>
<英文姓名 />
<别名或绰号 />
<性别>1</性别>
<出生日期>2009-01-08T10:10:39+08:00</出生日期>
<移交地址省市县区>张家口</移交地址省市县区>
<移交地址详细地址>潍坊市</移交地址详细地址>
<撤销时间>19520827175518</撤销时间>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
[code]
在手机端 直接转如何实现
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>
解压 上面的字节
大侠帮忙啊
先把H4sIAJXSH4kA/7VYWVMbRxB提取出来付给字符串
把字符串通过base64编码 变成byte[]形式byte[] bt = Base64.decode(String s);
即可转换在通过Gzip 解压方式进行解压。具体实施代码:
/***
* 压缩GZip
*
* @param data
* @return
*/
public static byte[] gZip(byte[] data) {
byte[] b = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(bos);
gzip.write(data);
gzip.finish();
gzip.close();
b = bos.toByteArray();
bos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
} /***
* 解压GZip
*
* @param data
* @return
*/
public static byte[] unGZip(byte[] data) {
byte[] b = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
GZIPInputStream gzip = new GZIPInputStream(bis);
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((num = gzip.read(buf, 0, buf.length)) != -1) {
baos.write(buf, 0, num);
}
b = baos.toByteArray();
baos.flush();
baos.close();
gzip.close();
bis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}