我有WCF服务,获取并返回JSON数据。以及调用此服务的Android移动应用。
修改
以下是服务器端和客户端的附加信息。
接下来的服务:
服务界面:
<ServiceContract()>
Public Interface ITest
<OperationContract()>
<WebInvoke(Method:="POST", RequestFormat:=WebMessageFormat.Json, ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.WrappedRequest)>
Function Test(header As RequestHeader, body As TestRequestResponse) As Boolean
End Interface
服务代码
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple, InstanceContextMode:=InstanceContextMode.Single)>
Public Class TestService
Implements ITest
Public Function Test(header As RequestHeader, body As TestRequestResponse) As Boolean Implements ITest.Test
Return True
End Function
End Class
的Web.Config
<system.serviceModel>
<services>
<service behaviorConfiguration="RMWS.TestBehavior" name="RMWS.TestService">
<endpoint address="Test" binding="webHttpBinding" behaviorConfiguration="WebBehavior" bindingConfiguration="WebBinding" contract="RMWS.ITest" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="WebBinding"/>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="WebBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="RMWS.TestBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
客户来电
目前通过javascript进行的客户端调用仅用于测试。将来客户端将是Android应用程序,但总的想法是相同的。
$.ajax({
type: "POST",
url: "http://localhost/RMWS/TestService.svc/Test/Test",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(somedata),
success: function (data)
{
...
},
error: function (httpRequest, textStatus, errorThrown)
{
alert(textStatus + ": " + errorThrown);
}
});
编辑2:
我知道可以使用SSL轻松完成。但是我的公司认为它对性能和流量来说太昂贵了,所以他们不想使用SSL,而是做一些其他的加密。如果可能,只有请求可以编码,因为响应不包含任何敏感信息。
编辑3:
除约瑟夫的答案外还有其他任何意见吗?
答案 0 :(得分:1)
SSL是最好的选择,如果你想继续使用JSON,你可能会混淆JSON,但这将不再是JSON,并且会很愚蠢,并且仍然可以被真正感兴趣的人访问。
你最好的选择是将二进制文件发送到设备,你可以使用pgp对其进行加密,但是你会遇到的问题是在Android应用程序中存储一个私钥,这本身就不是很安全。
SSL是最安全的选择。