当前位置: 首页 > 知识库问答 >
问题:

Objective-C与ActiveCollab3 Beta API集成的问题

东方志尚
2023-03-14

我试图实现一个目标C程序与ActiveCollab3 beta接口,我遇到了一些问题。我可以在浏览器中输入NSLog输出的url,它可以很好地为所有项目提取xml。当我试图通过这个程序访问它时,它不想为我工作,它给了我一个HTTP 403错误。我是Objective C的新手,我是作为一种学习经验来做这件事的,所以有些代码可能是多余的。提前感谢您的帮助。导入用尖括号包围,但会导致它在StackOverflow上隐藏,所以我将它放在引号中

#import "Foundation/Foundation.h"

int main (int argc, const char * argv[]) {

    NSString *token = @"my-token"; 
    NSString *path_info = @"projects";
    NSString *url = @"http://my-site/api.php?";

    NSString *post = [[NSString alloc] initWithFormat:@"path_info=%@&auth_api_token=%@",path_info, token];
    NSLog(@"Post: %@", post);

    NSString *newRequest;
    newRequest = [url stringByAppendingString:post];

    NSLog(@"Path: %@", newRequest);

    NSData *postData = [newRequest dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    [request setURL:[NSURL URLWithString:newRequest]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:postData];

    NSURLResponse *response;
    NSError *err;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

    NSString *returnData = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
    NSLog(@"%@", returnData);

    //printf("Print line");
    return 0;
}

共有1个答案

欧阳君浩
2023-03-14

您的请求头是限制性的,而且是不必要的,对于AC API,您需要的是GET请求而不是POST请求

int main (int argc, const char * argv[]) 
{

    NSString *requestString = [[NSString alloc] initWithFormat:@"path_info=%@&auth_api_token=%@", path_info, token];
    NSLog(@"Post: %@", requestString);

    NSString *newRequest;
    newRequest = [url stringByAppendingString: requestString];

    NSLog(@"Path: %@", newRequest);

    NSData *postData = [newRequest dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion: YES];

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];

    NSLog(@"Data: %@", postData);

    [request setURL: [NSURL URLWithString:newRequest]];
    [request setHTTPMethod: @"GET"];

    NSURLResponse *response;

    NSError *err;
    NSData *responseData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &err];
    NSString *returnData = [[[NSString alloc] initWithData: responseData encoding: NSUTF8StringEncoding] autorelease];
    NSLog(@"Return: %@", returnData);

    //printf("Print line");
    return 0;
}
 类似资料:
  • 我正试图将sonarqube集成到我的android项目中。下面是我的根构造。gradle 我试图遵循这里提到的内容--http://docs.SonarQube.org/display/scan/analysy+with+SonarQube+scanner+for+gradle,并用Lint和SonarQube分析Android项目

  • 我想将phoenix与zeppelin集成,我在独立PC上运行Hbase,内部设置了zookeeper,即在hbase-env.sh中设置export hbase_manages_zk=true,我配置了phoenix服务器和客户机jar,phoenix从命令行工作正常,我使用./sqlline.py localhost进行测试,我可以运行pheonix查询。 我需要在zeppelin中设置phe

  • 问题内容: 用Java 最接近Objective-C的实现是什么?对我来说,看起来像,但是我对Objective-C还是很陌生。 谢谢 问题答案: 是一个类集群(请参阅《可可基础指南》中的“类集群”部分),这意味着实际的实现对您(API用户)是隐藏的。实际上,Foundation框架将在运行时根据数据量等选择适当的实现。此外,可以将任何一个作为键,而不仅是(当然,键对象的键必须是常量)。 因此,最

  • 问题内容: 我已经搜索过Swift书,但是找不到@synchronized的Swift版本。如何在Swift中进行互斥? 问题答案: 您可以使用GCD。它比更加冗长,但可以代替:

  • Objective-C,通常写作 ObjC 和较少用的 Objective C 或 Obj-C,是扩充 C 的面向对象编程语言。它主要使用于 Mac OS X 和 GNUstep 这两个使用 OpenStep 标准的系统,而在 NeXTSTEP 和 OpenStep 中它更是基本语言。Objective-C 可以在 gcc 运作的系统写和编译,因为 gcc 含 Objective-C 的编译器。

  • 目前正在做一个游戏,我已经到了需要实现多人游戏功能的地步。我正在尝试将GameSparks SDK加载到我的项目中,但无法正确导入模块,我不太确定发生了什么。 SDK是用Objective C编写的,但我的项目是用Swift编写的。他们说你只需要将文件导入到你的项目中,所以我用cocoapods安装了它,并将源文件复制到我的项目中,我的文件如下所示: 在我的桥接报头中,我有 并且没有错误,一切都编