我正在尝试调用webservice方法并将参数传递给它。
这是我的网络服务方法:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetHelloWorld()
{
Context.Response.Write("HelloWorld");
Context.Response.End();
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetHelloWorldWithParam(string param)
{
Context.Response.Write("HelloWorld" + param);
Context.Response.End();
}
这是我的目标C代码:
NSString *urlString = @"http://localhost:8080/MyWebservice.asmx/GetHelloWorld";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSError *errorReturned = nil;
NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&errorReturned];
if (errorReturned)
{
//...handle the error
}
else
{
NSString *retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", retVal);
//...do something with the returned value
}
因此,当我致电GetHelloWorld时,它的效果很好,并且:
NSLog(@"%@", retVal);
显示HelloWorld,但是如何调用GetHelloWorldWithParam?如何传递参数?
我尝试:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"myParameter" forKey:@"param"];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&error];
并将以下两行添加到请求中:
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: jsonData];
我有错误:
System.InvalidOperationException: Missing parameter: test.
at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
谢谢您的帮助!泰迪熊
我已经使用了您的代码并进行了一些修改。请先尝试以下操作:
NSString *urlString = @"http://localhost:8080/MyWebservice.asmx/GetHelloWorldWithParam";
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSString *myRequestString = @"param="; // Attention HERE!!!!
[myRequestString stringByAppendingString:myParamString];
NSData *requestData = [NSData dataWithBytes:[myRequestString UTF8String] length:[myRequestString length]];
[request setHTTPBody: requestData];
其余部分与您的代码相同(从行开始NSError *errorReturned = nil
)。
现在正常情况下,此代码应该可以正常工作了。但是,如果您尚未在下方进行修改web.config
,则不会。
检查web.config
文件中是否包含以下几行:
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>
我已经通过这种方式解决了它,希望它也对您有用。
我在Symfony 3.3的服务中使用了一个参数,但我不断收到错误。 错误 [Symfony\Component\DependencyInjection\Exception\AutowiringFailedException]无法自动连线服务“AppBundle\service\ApiInterface”:方法“\uuu construct()”的参数“$api\u endpoint”必须具有类型
问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对
我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?
我有一个简单的 Servlet 应用程序的安全部分,我需要将参数传递给我的应用程序的安全部分。 流量: 第三方需要使用我的登录机制(简单的安全servlet) 用户尝试转到: mycompany.com/loginApp/login?pref=1 “/login”url是安全的,因此应用程序服务器告诉浏览器重定向到我的登录名.jsp,但此时URL更新为:mycompany.com/loginApp
我需要使用Liferay的索引来搜索与确定字符串匹配的用户,这可以通过使用UserLocalServiceImpl搜索(长公司ID、字符串关键字、int状态、LinkedHashMap)实现 此外,我希望能够通过过滤用户。 我希望我可以将用户组ID传递给这个函数到参数中,但我似乎找不到任何关于参数应该是什么的文档。 通过查看源代码,它看起来像是被添加到用于生成查询的中,但我无法跟踪代码到随后使用的
问题内容: 在我的RCP应用程序中,左侧有一个用于导航的视图,右侧有一个用于视图的文件夹。透视图看起来像这样: 我想根据用户在导航树中选择的内容打开不同的视图。认为这并不难。我的导航树视图: 这似乎很好。仅有一个小问题:我需要以某种方式将对象(例如,selectedItem)传递给我的视图,以使用户与其内容进行交互。我怎么做? 我看到了一些示例,其中一些同事编写了自己的视图,并将其放置在右侧。然后