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
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
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
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>
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);
}
}
}
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