Pada Postingan kali ini saya akan berbagi mengenai cara membuat layanan WCF dengan data JSON untuk dipakai pada iOS.
Pengantar
Layanan Web sangat penting bagi pengembangan mobile. Dalam
tips kali ini, kita akan belajar untuk membuat layanan WCF yang mengembalikan
data JSON. Kita juga akan belajar untuk menghasilkan permintaan untuk layanan
ini di sisi iOS dalam artikel ini.
latar belakang
Saya berasumsi bahwa Anda sudah memiliki layanan WCF yang
Anda buat. Jika Anda tidak atau +belum menciptakannya, buatlah yang baru
"WCF Service Application ".
Menggunakan Kode
Pertama-tama, mari kita membuat operasi import yang
diperlukan.
//Interface
Imports System.ServiceModel
//Implement
Imports System.Web.Script.Serialization
Imports System.ServiceModel.Activation
Imports System.ServiceModel
Imports System.ServiceModel.Web
Imports System.ServiceModel
//Implement
Imports System.Web.Script.Serialization
Imports System.ServiceModel.Activation
Imports System.ServiceModel
Imports System.ServiceModel.Web
Setelah ini, Anda harus mendefinisikan beberapa fungsi dan
kelas di sisi antarmuka.
Sebagai contoh:
<OperationContract()>
<WebGet(UriTemplate:="GetUser", RequestFormat:=WebMessageFormat.Json, _
ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.Wrapped)> _
Function GetUser() As List(Of Users)
<DataContract()>
Class Users
<DataMember>
Public Property ID As Integer
<DataMember>
Public Property NAME As String
<DataMember>
Public Property SURNAME As String
End Class
<WebGet(UriTemplate:="GetUser", RequestFormat:=WebMessageFormat.Json, _
ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.Wrapped)> _
Function GetUser() As List(Of Users)
<DataContract()>
Class Users
<DataMember>
Public Property ID As Integer
<DataMember>
Public Property NAME As String
<DataMember>
Public Property SURNAME As String
End Class
Seperti yang Anda lihat, kita harus mengatur RequestFormat
untuk JSON. Kita juga harus mengatur ResponseFormat untuk JSON.
Kemudian, kita perlu untuk mengimplementasikan fungsi ini.
Public Function GetUser() As List(Of IService1.Users)
Implements IService1.GetUser
Dim users As New List(Of IService1.Users)
Dim user As New IService1.Users
user.ID = 1
user.NAME = "Melih"
user.SURNAME = "Mucuk"
users.Add(user)
Return users
End Function
Dim users As New List(Of IService1.Users)
Dim user As New IService1.Users
user.ID = 1
user.NAME = "Melih"
user.SURNAME = "Mucuk"
users.Add(user)
Return users
End Function
Kita telah menciptakan daftar dan mengembalikannya.
Dan Juga file Web.config harus diatur.
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="BehConfig">
<endpoint address="" binding="webHttpBinding"
contract="WcfService1.IService1" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="BehConfig">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="BehConfig">
<endpoint address="" binding="webHttpBinding"
contract="WcfService1.IService1" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="BehConfig">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Hanya Itu saja. Layanan WCF siap. Mari kita lihat bagaimana
untuk menghasilkan permintaan untuk layanan ini di sisi iOS.
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *request = [NSString stringWithFormat:
@"http://localhost:portnumber/Service1.svc/GetUser"];
NSURL *URL = [NSURL URLWithString:
[request stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:URL options:NSDataReadingUncached
error:&error];
if(!error)
{
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&error];
NSMutableArray *array= [json objectForKey:@"GetUserResult"];
for(int i=0; i< array.count; i++)
{
NSDictionary *userInfo= [array objectAtIndex:i];
NSInteger *id = [userInfo objectForKey:@"ID"];
NSString *name = [userInfo objectForKey:@"NAME"];
NSString *surname = [userInfo objectForKey:@"SURNAME"];
NSLog(@"ID: %d NAME: %@ SURNAME: %@", id,name,surname);
}
}
}
{
[super viewDidLoad];
NSString *request = [NSString stringWithFormat:
@"http://localhost:portnumber/Service1.svc/GetUser"];
NSURL *URL = [NSURL URLWithString:
[request stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:URL options:NSDataReadingUncached
error:&error];
if(!error)
{
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:&error];
NSMutableArray *array= [json objectForKey:@"GetUserResult"];
for(int i=0; i< array.count; i++)
{
NSDictionary *userInfo= [array objectAtIndex:i];
NSInteger *id = [userInfo objectForKey:@"ID"];
NSString *name = [userInfo objectForKey:@"NAME"];
NSString *surname = [userInfo objectForKey:@"SURNAME"];
NSLog(@"ID: %d NAME: %@ SURNAME: %@", id,name,surname);
}
}
}
Semuanya selesai, hanya tinggal dijalankan saja.
Yang perlu diperhartikan!
Untuk UriTemplate
RequestFormat:=WebMessageFormat.Json,
ResponseFormat:=WebMessageFormat.Json // For Json
untuk Web.config:
service name="WcfService1.Service1" //
Application_Name.Implement_Class
bagian contract
contract="WcfService1.IService1" //Application_Name.Interface_Class
bagian binding
binding="webHttpBinding" // for web request
0 comments:
Post a Comment