- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,这是我用于向 Twitter 关注者/关注者发送私有(private)消息的代码,消息已发送,但问题是关注者正在获取带有 %20 的消息字符串
-(void)PostOnTwitter :(NSArray *)ParamArray
{
NSLog(@"ParamArray===%@",ParamArray);
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
if(!accountStore)
accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error)
{
if(granted!=0)
{
NSArray *twitterAccounts = [self.accountStore accountsWithAccountType:accountType];
NSURL *MsgUrl=[NSURL URLWithString:@"https://api.twitter.com/1.1/direct_messages/new.json"];
NSDictionary *Msgparams = @{@"screen_name" : [ParamArray objectAtIndex:0], @"text" :
[[ParamArray objectAtIndex:1]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] };
SLRequest *Msgrequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:MsgUrl parameters:Msgparams];
[Msgrequest setAccount:[twitterAccounts lastObject]];
[Msgrequest performRequestWithHandler:^(NSData *responseData,NSHTTPURLResponse *urlResponse,NSError *error) {
if (responseData) {
if (urlResponse.statusCode >= 200 && urlResponse.statusCode < 300) {
NSError *jsonError;
NSDictionary *timelineData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&jsonError];
if (timelineData) {
[self performSelectorOnMainThread:@selector(CardHasSent) withObject:nil waitUntilDone:NO];
}
}
}
}];
}
}];
}
}
我的关注者正在收到像这样的私信
user%20has%20sent%20you%20a%20card%20from%20happy%20heART%20cards.%20http://www.happyheartcards.net/o.php?t=ODYw
如何发送正确的文本?请帮助。
我认为 problem 是 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding
,但如果我不使用 NSUTF8StringEncoding
消息发送失败。
ParamArray 之前没有编码 ParamArray===( jry088, “用户已从 happy heART 卡片中向您发送了一张卡片。http://www.happyheartcards.net/o.php?t=OTA1”)
最佳答案
%20 确实是空格字符的字符串转义,这是您在使用 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding 时请求的正确行为。但是,Twitter API 确实需要像这样编码的直接消息的 POST 数据: https://dev.twitter.com/docs/api/1.1/post/direct_messages/new
因此我认为最有可能的事情是你运行了两次编码,这意味着你的 %20s 被重新编码为“嘿,我真的是指一个百分比在这里签名。
当我查看代码时,有多个对 [ParamArray objectAtIndex:1] 的冗余调用以及之前将字符串数据重新编码为 UTF8:
NSString *StringData = [ParamArray objectAtIndex:1];
const char *cString = [StringData UTF8String];
NSString *Datastringone = [NSString stringWithFormat:@"%s",cString];
NSString *str = [ParamArray objectAtIndex:1];
这些变量或这个处理都没有被使用过。这让我想知道 ParamArray 中的字符串是否在您的应用程序的早期部分已经被编码为 UTF8,以便您在此处传递它时第二次对其进行编码。
NSDictionary *Msgparams = @{@"screen_name" : [ParamArray objectAtIndex:0], @"text" :
[[ParamArray objectAtIndex:1]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] };
编辑实际上,在更新上述内容之前,我将返回到我最初发布的内容。我认为你实际上得到了你对编码文本的要求,问题不应该是为什么你在你的文本中得到 %20s,而是为什么你现在得到的代码正在接受 DM 而它毕竟失败了。
如果您查看我上面链接的 API 引用 (https://dev.twitter.com/docs/api/1.1/post/direct_messages/new),它会将 POST 数据显示为之前编码的 %,但如果您实际查看要提交的内容的完整代码示例,则该字符串不是t 实际上根本没有编码:
94 "text": "hello, tworld. welcome to 1.1."
所以首先——尽可能少地更改其他内容,但删除编码阶段,并确认您仍然无法发送 DM。可能是您在没有意识到的情况下修复了其他问题,这就是 POST 开始工作的原因。如果不将编码阶段嵌入到字典的创建中,这显然会有所帮助。如果您分别创建所有值,然后在创建字典时传递最终编码和准备好的变量,您将获得更易读的代码。可能会创建更多的临时变量或指针,但为了提高代码的可读性,这是非常值得的。 :)
关于ios - 在 Twitter 私信中获取 %20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216711/
当用户执行命令时,我只想将输出发送回该用户,而不是 channel 。 我正在使用 PircBotX 框架。 我的代码: public void onMessage(MessageEvent even
我有一个名为“rbot”的自定义 Slack 机器人。我还创建了一个自定义斜杠命令“/r-out”。每当从任何 channel 执行此命令时,都会使用包含“channel_id”和“channel_n
我打算为我的用户制作一个 PM 系统,总的来说这看起来很容易,但是我看到制作 PM 系统的教程的方式有一个问题。 在我计划的工作方式中,会有像 user_from、user_to 这样的行,然后是消息
我正在尝试在我的 Titanium 应用程序中发送 Facebook Private。我尝试了以下两种方式,但没有取得任何成功。 方法一: var data = { link: "https:
我一直在网上搜索,但没有运气。我试图弄清楚如何将私有(private)消息从一个用户发送给另一个用户。有很多片段,但我不确定客户端/服务器交互。如果我有要发送到的套接字的 ID,我如何将其发送到服务器
我正在使用 phonegap 做一个简单的 android 项目。我必须从我的应用程序向 facebook 中的 friend 发送私有(private)消息。有什么方法可以通过 Url 发送消息吗?
我是一个nodejs菜鸟,但尝试与一些用户创建一个聊天室,它有效,但现在我想在聊天中使用命令“/w”发送私有(private)消息,例如: /w 大卫你好,你好吗? 只有 David 可以读取该消息。
如果有人可以帮助我,我有一个问题: 我希望我的应用程序使用 GraphAPI 接收 Instagram Direct 消息的 webhook 通知。 我尝试使用“instagram_manage_me
我需要使用 SLrequest 访问直接消息。我使用 twitter 的 Reverse oAuth 获得了 oAuthToken 和 oAuthToken Secret。现在我需要知道如何从 htt
有没有人知道如何通过 Slack RTM 向用户发送私有(private)消息?我正在尝试创建游戏,并想在 Slack 中私信一位用户以提供更新等。 你可以通过 https://github.com/
我希望机器人向某人发送直接消息,但我不知道该怎么做。 event.getChannel().sendMessage("Hello World").queue(); 我想知道是否可以将 channel
我是一名优秀的程序员,十分优秀!