Я создал веб-сервис SOAP, который будет доступен из среды Objective C с помощью библиотеки ASIHTTPRequest с использованием моста JSON-RPC.Когда я проверял это из JavaScript, все было в порядке.Но из Objective-C я получил ошибку
{"id":2,"error":{"code":591,"msg":"method not found (session may have timed out)"}}
Веб-сервис:
@WebService()
public class UserWS {
/**
* User data list - id, first name, last name, service number, username
*/
/**
* Provides web service to get current user with waiter role data.
*/
@WebMethod(operationName = "getUsers")
public String[][] getUsers() {
String[][] userDara = null;
try {
Context context = POSNamingService.getContext();
Users us = (Users) context.lookup("business.Users");
List<User> users = us.getWaiterUsers();
userDara = new String[users.size()][5];
for (int i = 0; i < userDara.length; i++) {
User user = users.get(i);
userDara[i][0] = String.valueOf(user.getUserNo());
userDara[i][1] = user.getFirstName();
userDara[i][2] = user.getLastName();
userDara[i][3] = user.getServiceNo();
userDara[i][4] = user.getLogin();
}
} catch (NamingException ex) {
Logger.getLogger(UserWS.class.getName()).log(Level.SEVERE, null, ex);
}
return userDara;
}
Класс моста:
public class Bridge {
private UserWS userWS = new UserWS();
public String[][] getUsers(int i) {
return userWS.getUsers();
}
Сторона объективного C:
(IBAction)clickDownloadButton:(id)sender {
NSURL *url = [NSURL URLWithString:@"http://10.200.0.24:1445/TestRPC-war/JSONRPC"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
NSString *sendData = [NSString stringWithFormat:@"{\"method\": \"getUsers\"}"];
request appendPostData:[sendData dataUsingEncoding:NSUTF8StringEncoding]];
[request setRequestMethod:@"GET"];
[request setDelegate:self];
[request setDidFailSelector:@selector(requestWentWrong:)];
[request setTimeOutSeconds:60];
[request startAsynchronous];
}