簡體   English   中英

在iOS中通過GCDAsyncsocket讀取xml文件

[英]Reading a xml file over GCDAsyncsocket in iOS

我在這里停留在一個非常基本的概念上。 我一直在為我的項目使用GCDAsyncsocket。 這是一種客戶端的請求響應,其中我通過套接字從服務器(基於Java)獲取xml文件,我讀取了該文件並將其保存在App的文檔目錄中,解析了發送給其他人的請求標簽,獲得了對相應請求的響應,將其寫入xml文件,並在每個相應請求后附加響應,然后將其發送回服務器。

我嘗試讀取文件,但是我想以字節為單位獲取數據,我無法將數據解碼為適當的格式有人可以幫助我了解如何通過套接字讀取xml文件(GCDAsyncsocket)並將其保存到我的應用程序文檔中目錄

這是我一直在使用的基本代碼:--(IBAction)connect:(id)sender {

NSString *hostAddress = self.serverTextfield.text;
uint16_t port = PORT;

_delegateQueue = dispatch_queue_create("com.a.cs.delegateQueue", NULL);
asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:_delegateQueue];

DDLogInfo(@"Connecting to %@ on port %hu...", hostAddress, port);

NSError *error = nil;
if (![asyncSocket connectToHost:hostAddress onPort:port error:&error])
{
    DDLogError(@"Oops Error Connecting.. %@",error);
    self.notificationTextView.text = @"Oops Error Connecting";
} else {
    DDLogVerbose(@"Connected");
    self.notificationTextView.text = @"Connected";
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *uniqueID = [defaults objectForKey:@"UUID"];

NSLog(@"%@",uniqueID);

 NSUInteger len = [uniqueID lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
 Byte buffer[2];
 buffer[0] = (0xff & (len >>8));
 buffer[1] = (0xff & (len));

 NSMutableData *outData = [NSMutableData dataWithCapacity:2];
 [outData appendBytes:buffer length:2];
 [outData appendData:[uniqueID dataUsingEncoding:NSUTF8StringEncoding]];

NSLog(@"%@",outData);
[asyncSocket writeData:outData  withTimeout:-1 tag:0];
[asyncSocket readDataWithTimeout:-1 tag:0];

}

這是我的操作方法,在名為“連接”的按鈕單擊上被調用。 我寫出一些數據發送給服務器,並開始讀取數據,然后在委托didReadData中,對從服務器接收到的數據進行操作,然后再次調用
[sock readDataWithTimeout:-1 tag:0]; 這樣就可以持續監聽讀取的數據...

現在,我期望服務器發送給我的是XML文件,而不是我從服務器獲取的字符串數據。我如何讀取和操作該文件? 另外,我該如何將文件發送回服務器,並將該文件保存在“應用程序的文檔”目錄中。任何幫助將不勝感激。

如果您還沒有看的話,我要看的第一件事是GCDAsyncSocket下載中包含的SimpleHTTPClient項目。 XML doctype是HTTP數據包內部的有效負載,因此它是對您的模型進行建模的合適項目。

也就是說,您確定您的代碼正在向服務器發送服務器期望的內容嗎? 它期望的只是一個UTF8字符串UUID嗎? 難道不希望UUID用XML包裝嗎? 服務器是否以某種方式記錄入站連接請求,您可以看到它正在獲得預期的結果並實際上返回給您XML?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM