Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用ApacheCxf Restful Web服务的ASIHttprequest_Objective C_Cocoa_Apache_Cxf_Asihttprequest - Fatal编程技术网

Objective c 使用ApacheCxf Restful Web服务的ASIHttprequest

Objective c 使用ApacheCxf Restful Web服务的ASIHttprequest,objective-c,cocoa,apache,cxf,asihttprequest,Objective C,Cocoa,Apache,Cxf,Asihttprequest,我正在从事一个涉及服务器端ApacheCXF的项目,该项目提供RESTfulWebService,以JSON格式输入和输出。客户端是一个带有ASIHTTPRequest和SBJson的MacOSX应用程序。在过去的几天里,我遇到了各种各样的问题,无法找到解决办法 在服务器端: @Override @POST @Path("/testService/") @Consumes(MediaType.APPLICATION_JSON) public Boolean service1(SomeMetaDa

我正在从事一个涉及服务器端ApacheCXF的项目,该项目提供RESTfulWebService,以JSON格式输入和输出。客户端是一个带有ASIHTTPRequest和SBJson的MacOSX应用程序。在过去的几天里,我遇到了各种各样的问题,无法找到解决办法

在服务器端:

@Override
@POST
@Path("/testService/")
@Consumes(MediaType.APPLICATION_JSON)
public Boolean service1(SomeMetaData metaData)
{
  return this.testMetaData(metaData);
}
在客户端:

NSString *requestURLString = [NSString stringWithFormat:@"%@%@", serverURL, @"/webServices/rest/testService"];
NSURL *url = [NSURL URLWithString:requestURLString];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setValidatesSecureCertificate:NO];
[request setRequestMethod:@"POST"];
[request addRequestHeader:@"Content-Type" value:@"application/json"];
NSString* jsonMetaData = [[SomeMetaData proxyForJson] JSONRepresentation];

NSMutableData *requestBody = [[NSMutableData alloc] initWithData:[jsonMetaData dataUsingEncoding:NSUTF8StringEncoding]];

[request setPostBody:requestBody];
[request startAsynchronous];

[request setCompletionBlock:^{
    NSLog(@"Response: %@", [request responseString]);
}];
[request setFailedBlock:^{
    NSLog(@"Failed: %@", [request error]);
}];
元数据对象生成的JSON字符串如下所示:

{
  "metaData": 
  {
    "name":"test.txt",
    "remoteKey":"4",
    "remoteShare":"test1"
  }
}
客户机和服务器位于不同的物理计算机中,但位于同一局域网内

第一期:

控制台中随机出现一个错误域错误。它的外观没有明显的图案,但它肯定会在我第一次尝试时出现

Failed: Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0x10013a030 {NSLocalizedDescription=A connection failure occurred, NSUnderlyingError=0x100190cf0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1005.)"}
第二期:

这似乎是一个json解析器错误,我真的不明白为什么。服务器端和客户端的容器具有相同的结构

Response for getExistsFileRequest: JAXBException occurred : unexpected element (uri:"", local:"metaData"). Expected elements are <{}someMetaData>. unexpected element (uri:"", local:"metaData"). Expected elements are <{}someMetaData>.
那不是JSON

{
  metaData =     {
    name = "test.txt";
    remoteKey = 4;
    remoteShare = test1;
};
}
你是说:

{
  "metaData": {
    "name":"test.txt",
    "remoteKey":"4",
    "remoteShare":"test1"
  }
}

(如果您这样做了,请更新您的问题,我将删除此答案;)

JAXBException位于这个xml名称空间(javax.xml.bind.JAXBException)中


您正在尝试将JSON解析为XML吗?

Ye,我刚刚使用了一个解析器来清除结构。我会更新我的问题。谢谢。为什么不直接从服务器粘贴实际字符串,这样我们就可以看到解析器抛出错误的原因了?我无法在服务器端截获请求主体。我试过用Fiddler,但不确定为什么它没有拦截任何东西。但我确实尝试在客户端拦截请求。请求头和请求体都已正确设置。您的jsonMetadata是什么样子的?它就像POST一样。json的纯文本格式。我能够用Wireshark在服务器端嗅探数据包。看起来非常好。感谢您回来:D肯定是JSON,正如我在服务器端的注释所指定的:@Consumes(MediaType.APPLICATION_JSON)。那么如何引发XML异常?服务器上的堆栈跟踪是什么?
{
  "metaData": {
    "name":"test.txt",
    "remoteKey":"4",
    "remoteShare":"test1"
  }
}