我现在正在构建一个webservice,我想在android应用程序中使用它。我面临的问题是,应该返回字符串(json)的webservice方法与方法名称(Login)相关联。我试图搜索这个问题,虽然我认为我不是第一个遇到这个问题的人,但我什么也没找到。
我的json变量看起来像这样:
json = "{ \"UserID\": \"" + login.UserID + "\", \"Salutation\": \"" + webUser.Salutation + "\", \"Title\": \"" + webUser.Title + "\", \"Name\": \"" + webUser.Name + "\", \"Lastname\": \"" + webUser.Lastname + "\" } ";
然后再返回。
但是当我通过Postman或我的Android应用程序消费它时,它看起来像这样:
{ "LoginResult": { \"UserID\": \"" + login.UserID + "\", \"Salutation\": \"" + webUser.Salutation + "\", \"Title\": \"" + webUser.Title + "\", \"Name\": \"" + webUser.Name + "\", \"Lastname\": \"" + webUser.Lastname + "\" }}
这是我不想要的行为,我找不到任何关于如何阻止这种行为的信息。
我怎样才能让我的Webservice只返回我写的字符串而不是连接在一起的methodname?
因为我真的无法理解为什么会发生这种情况,所以我只是搜索是否可以在某个地方配置这种行为,但我什么也没找到。
编辑:我不认为,这真的会改变很多,但正如它被问到的,这里是完整的方法有点模糊:
public string Login(string username, string passwort)
{
string json = "error";
try
{
var login = Namespace.ViewModels.LoginData.SelectByUserNamePassword(username, passwort);
Namespace.Models.WebAppUser webUser = new Namespace.Models.WebAppUser();
lock (webUser)
{
webUser = new Namespace.Controllers.ApplicationController().setWebUserT(Convert.ToInt32(login.UserID), Convert.ToInt32(login.BetriebID), login.BetriebTyp, login.SessionID, login.UniqueID, login.DBName);
}
if (webUser != null && webUser.UserID != -1)
{
json = "{ \"UserID\": \"" + login.UserID + "\", \"Salutation\": \"" + webUser.Salutation + "\", \"Title\": \"" + webUser.Title + "\", \"Name\": \"" + webUser.Name + "\", \"Lastname\": \"" + webUser.Lastname + "\" }";
}
}
catch (Exception ex)
{
SimpleLogger.Exception(ex);
}
return json;
}
1条答案
按热度按时间zour9fqk1#
我终于找到了答案。
在派生Serviceclass.svc的接口中,有一个我忽略的指定格式。
[WebInvoke(Method =“GET”,UriTemplate =“Login?username={username}&passwort={passwort}",RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Wrapped)] string Login(string username,string passwort);
在这里,我将包含请求的BodyStyle = WebMessageBodyStyle.Wrapped更改为:
BodyStyle = WebMessageBodyStyle.Bare
并且它不再将方法的名称包含到我的JSON响应中。