Objective c 从IOS应用程序使用OAuth发布推文

Objective c 从IOS应用程序使用OAuth发布推文,objective-c,ios,oauth,twitter,twitter-oauth,Objective C,Ios,Oauth,Twitter,Twitter Oauth,我正在为IPhone构建一个twitter客户端,我正在使用OAuth验证我对twitter的请求 现在,我能够获得家庭时间线,甚至发布推文(不包含任何空格或符号)。当我尝试发布包含空格的推文时,问题就开始了。例如,它给我:{“错误”:“不正确的签名”,“请求”:“\/1\/statuses\/update.json”} 例如,tweet:“ThisIsATweet”起作用,但tweet:“ThisIsATweet”不起作用 以下是我的http请求正文代码: NSData* body =[NSS

我正在为IPhone构建一个twitter客户端,我正在使用OAuth验证我对twitter的请求

现在,我能够获得家庭时间线,甚至发布推文(不包含任何空格或符号)。当我尝试发布包含空格的推文时,问题就开始了。例如,它给我:{“错误”:“不正确的签名”,“请求”:“\/1\/statuses\/update.json”}

例如,tweet:“ThisIsATweet”起作用,但tweet:“ThisIsATweet”不起作用 以下是我的http请求正文代码:

NSData* body =[NSString stringWithFormat:@"status=%@",[self percentageEncoding:tweet]];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d",[body length]] forHTTPHeaderField:@"Content-Length"];

[request setHTTPBody:[body dataUsingEncoding:NSISOLatin1StringEncoding]];

首先使用
stringByAddingPercentEscapesUsingEncoding:

对字符串进行转义,然后使用
stringByAddingPercentEscapesUsingEncoding:

尝试将编码更改为NSASCIIStringEncoding或NSUTF8StringEncoding,并查看其是否有效。我不认为你需要在身体里设置信息时逃避它。仅当您将其作为参数值添加到URL中时,才需要该参数

[request setHTTPBody:[[NSString stringWithFormat:@"status=%@", tweet] 
    dataUsingEncoding:NSASCIIStringEncoding]];

尝试将编码更改为NSASCIIStringEncoding或NSUTF8StringEncoding,然后查看其是否有效。我不认为你需要在身体里设置信息时逃避它。仅当您将其作为参数值添加到URL中时,才需要该参数

[request setHTTPBody:[[NSString stringWithFormat:@"status=%@", tweet] 
    dataUsingEncoding:NSASCIIStringEncoding]];

检查您的
请求标题
!我猜您创建了错误的签名值! 请记住,您的
标题必须如下所示:

POST http://upload.twitter.com/1/statuses/update_with_media.json

User-Agent: themattharris' HTTP Client

Host: upload.twitter.com

Accept: /

Proxy-Connection: Keep-Alive

Authorization: OAuth oauth_consumer_key="mbmuCGVFTGHZOo5zr5Sx5A", oauth_nonce="f9685243ba64308204b1c14a05950b09", oauth_signature="LX%2BcnRvzT5Rm%2BYkPzdhX6I%2Bt9oo%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1313443626", oauth_token="119476949-KQjqYB1QCSC9ZtaTI8RRDDRJdSgk8hMcT4BJMEWi", oauth_version="1.0"

Content-Length: 34411

Content-Type: multipart/form-data;

检查您的
请求标题
!我猜您创建了错误的签名值! 请记住,您的
标题必须如下所示:

POST http://upload.twitter.com/1/statuses/update_with_media.json

User-Agent: themattharris' HTTP Client

Host: upload.twitter.com

Accept: /

Proxy-Connection: Keep-Alive

Authorization: OAuth oauth_consumer_key="mbmuCGVFTGHZOo5zr5Sx5A", oauth_nonce="f9685243ba64308204b1c14a05950b09", oauth_signature="LX%2BcnRvzT5Rm%2BYkPzdhX6I%2Bt9oo%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1313443626", oauth_token="119476949-KQjqYB1QCSC9ZtaTI8RRDDRJdSgk8hMcT4BJMEWi", oauth_version="1.0"

Content-Length: 34411

Content-Type: multipart/form-data;

很抱歉,使用stringByAddingPercentEscapesUsingEncoding无法解决问题。哎呀,我现在在代码中看到,您已经对其进行了转义:S。。如果跳过内容长度会发生什么情况?跳过内容长度时不会发生任何情况,相同的问题,很抱歉,使用stringByAddingPercentEscapesUsingEncoding无法解决问题。哎呀,我现在在代码中看到,您已经对其进行了转义:S。。如果跳过内容长度会发生什么情况?跳过内容长度时不会发生任何情况,同样的问题,这也不起作用,我仍然收到相同的错误:签名不正确您是否尝试使用MGTwitterEngine更新状态?如果这也会产生相同的错误,我会开始查找代码中的问题。这也不起作用,我仍然会收到相同的错误:签名不正确您是否尝试使用MGTwitterEngine更新状态?如果这也会产生同样的错误,我会开始在我的代码中查找问题。你能写下在twitter上发布的url吗?你创建请求的那个人?你能写下在twitter上发布的url吗?您创建请求时使用的那个?