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编码的图像截断为几个字符以便简洁。)