我被困在這裏的一個非常基本的概念。我一直在爲我的項目使用GCDAsyncsocket。它是客戶端的請求響應類型,其中我從服務器(基於Java)通過套接字獲取xml文件,我讀取此文件,將其保存在App的文檔目錄中,解析發送給其他人的請求標記,獲取相應請求的響應以及將其寫入一個xml文件,在每個請求後添加響應並將其發送回服務器。在iOS中通過GCDAsyncsocket讀取一個xml文件
我試着讀取文件,但我得到的字節數據我想,我無法解碼該數據到適當的格式有人可以幫助我如何通過套接字讀取一個XML文件(GCDAsyncsocket)並保存它我的應用程序的文件目錄
這是基本的代碼,我一直在使用: - - (IBAction爲)連接:(ID)發送{
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我操縱我從服務器收到的數據,並再次調用
[襪子readDataWithTimeout:-1標籤:0];以便它不斷監聽讀取數據...
現在,而不是我從服務器獲取的字符串數據,我期待一個XML文件,我的服務器將發送給我..如何讀取此文件並操縱它?另外我怎樣才能發送一個文件到我保存在我的應用程序的文檔目錄中的服務器..任何幫助將不勝感激..
你給了我們一點點繼續。通過說你「試着閱讀文件」我擔心你沒有閱讀過GCDAsyncSocket文檔,「入門」和「常見陷阱」,而是希望GCDAsyncSocket有一個你錯過的神奇的「readXMLstream」方法。由於它沒有,讀取文件的概念不適用於與庫進行交互的級別。你正在使用哪種-readData ...方法?你對這些數據做了什麼?是的,GCDAsyncSocket只能看到數據,而不能理解更高層次的數據。 – tobinjim 2015-03-31 15:04:10
@tobinijm - 我已經更新了我的帖子上面...對不起,延遲! – user2606782 2015-04-07 08:14:26
感謝您提供更多信息。一般來說,stackoverflow在這裏回答更具體的問題「爲什麼這個代碼出錯?」或「爲什麼我的觀點總是黑色,即使我......」多種問題,而不是關於方法或代碼審查的問題。我認爲您需要幫助處理髮送給您的XML數據,但您尚未提供該代碼。說這對你並不是很有幫助,所以我會發佈一個「答案」,可以在評論之外繼續對話。 – tobinjim 2015-04-07 12:39:29