十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
[OperationContract(Name="sayHelloJson")]
创新互联服务项目包括安远网站建设、安远网站制作、安远网页制作以及安远网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,安远网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到安远省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "sayHello", BodyStyle = WebMessageBodyStyle.Wrapped)]
String sayHello();
[OperationContract(Name = "SendMessageJson")]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SendMessage/{Message}", BodyStyle = WebMessageBodyStyle.Wrapped)]
String SendMessage(String Message);
比如说第一个不带参数的:
那么第二个带参数的应该怎么调用?(比如说参数是"abc")
我指的是在浏览器中或java的httpclient中,因为我准备在android上实现客户端,所以.net的调用方式就不必讲了。
你URITemplate已经设置了。Get方式。
我猜测一下调用的URL应该是: 网站URL/SendMessage/你好
另外建议你使用REST WCF自带的一个帮助页面,里面会给出更精确的调用示例。
response.getStatusCode()==200:代表请求成功
response.getStatusCode()==303:代表重定向
response.getStatusCode()==400:代表请求错误
response.getStatusCode()==401:代表未授权
response.getStatusCode()==403:代表禁止访问
response.getStatusCode()==404:代表文件未找到
response.getStatusCode()==500:代表服务器错误
楼主,网络编程中,有异常是很正常的,网络状态不好的时候,就会调用失败了。所以要处理好异常。
第一:在服务契约上标注一下你的回调契约是哪个即可。
[ServiceContract(CallbackContract = typeof(你的回调契约类型))]
第二:回调契约就是用于服务端控制客户端的。比如,一个典型场景是,客户端提交请求以后立即返回;服务端处理一段时间后,再通知客户端结果。
第三:“假如我有一个总控制台,想控制下面的各个客户端,是不是必须使用wcf双工技术才能实现?”是的。
第四:“QQ的远程操作要用什么技术弄呢”这个就比较复杂了。简而言之,就是操作端往接收端发送指令,接收端根据指令来操作,并返回画面数据。比如,操作端发送鼠标键盘的信息,接收端把这些信息变成Windows消息,发送给操作系统(相当于重现一次鼠标键盘操作)。
也只能参照dyw那个帖子里面最后一位的办法 通过java做中介服务来实现了
参考: Android to WCF: Streaming multi part binary images
WCF收到的数据也包括了MIME头。所以WCF收到的长度大于啊Android发送的长度,因为MIME头信息还是有规律的,就是最后"Content-Transfer-Encoding: binary\r\n\r\n",所以解析数据的时候,从这些字符后开始。
C# code?12345678910111213141516171819202122232425 internal static byte[] GetBytesFromStream(Stream stream, System.Text.Encoding encoding) { // Read the stream into a byte array byte[] data = ToByteArray(stream); Listbyte dataList = new Listbyte(); // Copy to a string for header parsing string content = encoding.GetString(data); string matchValue = "Content-Transfer-Encoding: binary\r\n\r\n"; int lastIndex = content.LastIndexOf(matchValue); int startingIndex = lastIndex + matchValue.Length; byte[] bytes = encoding.GetBytes(content.Substring(0, startingIndex - 1)); int bytesLength = bytes.Length; for (int i = bytesLength + 1; i data.Length; i++) { dataList.Add(data[i]); } return dataList.ToArray(); }
还有一种是使用MultipartParser
参考:
Reading file input from a multipart/form-data POST
C# code?12345678910 public void Upload(Stream stream) { MultipartParser parser = new MultipartParser(stream); if (parser.Success) { // Save the file SaveFile(parser.Filename, parser.ContentType, parser.FileContents); } }
使用 WCF 实现 RESTful 方式的 WebService