| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:[求助]关于Web Service
只看楼主 加入收藏
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
 问题点数:0 回复次数:7 
[求助]关于Web Service
最近写了个Web Service但不支持Image或Bitmap等对象代码如下:

[WebMethod]
public Image GetPartitionPic(Image sourceimg,int x,int y,int width,int height)
{
Bitmap b=new Bitmap(width,height);
..............
}

运行时总报错:无法序列化,因为Image没有公有构造函数(注:我已写了构造)
搜索更多相关主题的帖子: Service Web 
2006-10-13 09:18
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
顶上去

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-10-13 12:48
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
用remoting
socket等傳遞系列化對象

webservice是用于傳遞簡單文本的
另外寫個dll來返回byte[]看看

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-10-13 13:03
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
版主大哥帮忙写几句吧

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-10-16 11:32
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
收藏
得分:0 

我这有方案,晚点写给你


2006-10-17 08:41
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
谢了!!

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-10-17 10:53
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
收藏
得分:0 

上午的时候是有人在等我,我就匆忙回了几句
WebService传输图片的时候我也遇到过。
开始我传输的是byte[]数组
使用方法:
客户端:
System.IO.MemoryStream ms=new System.IO.MemoryStream();
Image img;//客户端图片来源
img.Save(ms,System.Drawing.Imaging.ImageFormat.Bmp);//具体根据你传的图象格式定义
byte[] bs=ms.GetBuffer();
已经获取到图象的byte[]格式,就可以直接传输了
Service端:
就只需要把图片参数改为byte[]这个参数是可以直接传输的
System.IO.MemoryStream ms=new System.IO.MemoryStream(bs);
Image img=Image.FromStream(ms);
此时已经将需要传输的图片翻译回来


但此种方法不容易被其他语言调用,这种方式我写好以后,C#可以直接调用到,但使用VC++进行调用时却出现了困难,因为VC++的那个库不支持直接传输byte[]类型,解决方法是改为传输Base64编码,因为byte[]数组中可能有非可见字符,所以无法直接以字符串传输,改为Base64编码后则全部变为可见字符但由于多了一次变换,效率自然低于前一种。
客户端:
string str=Convert.ToBase64String(bs);
Service端:
需要把图片参数由byte[]改为string。(希望你传输的图片转为Base64编码后的字符数应该是不超过string类型的最大长度,否则你就得增加标志位分多次传输了,不过这也似乎是不可能的,string能存储21亿字符吧)。
解码也有方便方法:
byte[] bs=Convert.FromBase64String(str);
楼主自己选择吧.


2006-10-17 12:31
yangglemu
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:521
注 册:2006-9-15
收藏
得分:0 
高,实在是高~

试着挣个威望!
2006-10-17 15:53
快速回复:[求助]关于Web Service
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012300 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved