XMPPFramework – 如何更新自己的头像图像?
我正在开发一个应用程序,我想更新我的头像图像。 我遵循XEP-0153
指南来更新我的头像图像,我构建了一个NSXMLElement
对应于XEP-0153
的以下代码,并通过XMPPStream
发送该元素。
image/jpeg Base64-encoded-avatar-file-here!
服务器响应以下错误:
image/jpeg Base64-encoded-avatar-file-here
而不是
请问任何人都可以发布与更新头像图片相关的代码或链接吗? 提前致谢。
- (void)updateAvatar:(UIImage *)avatar { NSData *imageData = UIImagePNGRepresentation(avatar); dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_PRIORITY_DEFAULT); dispatch_async(queue, ^{ XMPPvCardTempModule *vCardTempModule = [[XMPPHandler sharedInstance] xmppvCardTempModule]; XMPPvCardTemp *myVcardTemp = [vCardTempModule myvCardTemp]; [myVcardTemp setName:[NSString stringWithFormat:@"%@",name.text]]; [myVcardTemp setPhoto:imageData]; [vCardTempModule updateMyvCardTemp:myVcardTemp]; }); }
#import“XMPPvCardTemp.h”
- (void)updateAvatar:(UIImage *)avatar{ NSData *imageData1 = UIImageJPEGRepresentation(avatar,0.5); NSXMLElement *vCardXML = [NSXMLElement elementWithName:@"vCard" xmlns:@"vcard-temp"]; NSXMLElement *photoXML = [NSXMLElement elementWithName:@"PHOTO"]; NSXMLElement *typeXML = [NSXMLElement elementWithName:@"TYPE"stringValue:@"image/jpeg"]; NSXMLElement *binvalXML = [NSXMLElement elementWithName:@"BINVAL" stringValue:[imageData1 base64Encoding]]; [photoXML addChild:typeXML]; [photoXML addChild:binvalXML]; [vCardXML addChild:photoXML]; XMPPvCardTemp *myvCardTemp = [[[self appDelegate] xmppvCardTempModule]myvCardTemp]; if (myvCardTemp) { [myvCardTemp setPhoto:imageData1]; [[[self appDelegate] xmppvCardTempModule] updateMyvCardTemp :myvCardTemp]; } else{ XMPPvCardTemp *newvCardTemp = [XMPPvCardTemp vCardTempFromElement:vCardXML]; [[[self appDelegate] xmppvCardTempModule] updateMyvCardTemp:newvCardTemp]; } }
从XMPP核心RFC ,
表示:
等待后重试(错误是暂时的)
所以你的代码应该等待一段时间并重新发送请求。
(这假设你实际上是在发送一个base64编码的JPEG图像作为你的vCard的BINVAL
。来自服务器的回复与你说你发送的请求不对应,所以我假设你已经编辑了两个。最好在您的问题中包含确切的请求和回复,但将base64编码的图像截断为几个字符以便简洁。)