繁体   English   中英

在iOS中通过GCDAsyncsocket读取xml文件

Reading a xml file over GCDAsyncsocket in iOS

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在这里停留在一个非常基本的概念上。 我一直在为我的项目使用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文件,而不是我从服务器获取的字符串数据。我如何读取和操作该文件? 另外,我该如何将文件发送回服务器,并将该文件保存在“应用程序的文档”目录中。任何帮助将不胜感激。

1 个回复

如果您还没有看的话,我要看的第一件事是GCDAsyncSocket下载中包含的SimpleHTTPClient项目。 XML doctype是HTTP数据包内部的有效负载,因此它是对您的模型进行建模的合适项目。

也就是说,您确定您的代码正在向服务器发送服务器期望的内容吗? 它期望的只是一个UTF8字符串UUID吗? 难道不希望UUID用XML包装吗? 服务器是否以某种方式记录入站连接请求,您可以看到它正在获得预期的结果并实际上返回给您XML?

1 GCDAsyncSocket部分读取长文本:iOS

当使用GCDAsyncSocket发送长文本字符串时,在接收端多次调用readDataWithTimeOut ,但是接收到的数据不一致,即,接收到相同的文本,但NSData不同。 差异的可能原因是什么? 请让我知道,因为我对GCDAsyncSocket了解GCDAsyncSocket 。 ...

2 准时读取来自GCDAsyncSocket的响应(iOS)

这个问题很简单,我只是很难弄清楚如何处理它。 我用以下方式读取数据: 现在,正如预期的那样,我的委托方法被调用并正确读取JSON数据: 问题是,由于GCDAsyncSocket是异步的,所以此代码块 后 在有机会读取数据之前调用它。我将如何确保读取数据,然后 ...

4 使用GCDAsyncSocket通过套接字进行Telnet

我正在尝试通过telnet从目标c连接到Cisco C40编解码器。 在我的电脑上使用终端时,我得到: 密码: 但是,在进行套接字连接时,需要进行telnet协商。 我是哪个但由于某种原因,我无法进入上面的“密码:”提示。 以下是接收和发送的telnet协商选项的细 ...

5 保存我正在阅读的 XML 文件

如何读取 XML 文件并编辑和保存相同的文件? 我得到的问题显然是“文件正在使用”,因为我正在阅读它。我是不阅读它还是以另一种方式阅读它? 我正在做的基本思想是,读取 SQL DB 并在那里写入新值,然后在新更改时更新 XML 文件。 XmlTextWriter选项似乎不是写入选项,而是用于编 ...

7 iOS:GCDAsyncSocket及其标签

在我的应用中,我使用的是GCDAsyncSocket,我以这种方式进行读写: 在我读取委托方法中的数据之后: 在此委托方法中,我记得“ readDataWithTimeout”,因此以这种方式读取所有数据。 如果执行以下操作,则我进行新呼叫时的问题ID: 我开始一个 ...

8 使用目标C(iOS 5)读取XML文件

我正在尝试使用目标C语言读取XML文件并对其进行解析。 我正在使用XCode 4.2并为iPhone编写应用程序。 我已经创建了Viewcontroller .h和.m文件。 我正在使用NSXMLParser,xml文件名为“ simple.xml”。 我已经从w3schools网站下载 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM