Я написал веб-службу REST в C#. Получить запрос работает нормально, но вставлять, обновлять и удалять нет. Когда я пытаюсь вставить некоторые значения из Android таблетки (клиента) через службу REST в базу данных MYSQL возникает ошибка: Метод не имеетВставить значения в mySQL с помощью wcf REST и Android
Я посылаю строку JSON от андроида клиента к веб-сервиса:
в Android Developer Tool (затмение):
String url = IP + PORT +"/RESTService/insert/";
HttpClient client = new DefaultHttpClient();
HttpResponse response;
JSONObject json = new JSONObject();
HttpPost post = new HttpPost(url);
json.put("userName", name);
json.put("userPassword", password);
StringEntity se = new StringEntity(json.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
post.setEntity(se);
response = client.execute(post);
в C#: сервисный интерфейс:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/insert/{jsonObj}",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
void InsertUser(string jsonObj);
Сервис Methode:
public void InsertUser(string jsonObj)
{
string name = null;
string password = null;
DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(User));
dynamic dynObj = JsonConvert.DeserializeObject(jsonObj);
foreach (var data in dynObj.userObject)
{
name = data.userName;
password = data.userPassword;
}
string sql = "INSERT INTO user (userName, userPassword) VALUES('" + name + "', '" + password +"';)";
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
command = new MySqlCommand(sql, conn);
command.ExecuteNonQuery();
conn.Close();
command.Dispose();
}
Мой Пользователь:
namespace RESTService
{
[DataContract]
public class User
{
[DataMember]
public string userName { get; set; }
[DataMember]
public string userPassword { get; set; }
public User(string name, string password)
{
this.userName = name;
this.userPassword = password;
}
}
При запуске веб-службы и пытаются вставить значения через приложение для Android, ничего не происходит. Я думаю, что значения из приложения не доходят до веб-службы. Но я понятия не имею, почему. Было бы здорово, если кто-то может мне помочь :).
Заранее спасибо
Благодарим вас за быстрый ответ. Я попробую C# unit test. Но у меня есть некоторые вопросы, в моем теле запроса мой пользователь передается следующим образом: {"userPassword": "test", "userName": "testname"} Как я могу получить атрибуты userName и userPassword с их значения. Какой параметр (строка, объект, ...), в моем веб-службы METHODE вставки я должен использовать общественной недействительным InsertUser (строка jsonObj) или общественного недействительными InsertUser (объект jsonObj) преобразовать JSONString в мой Пользовательский объект? – tharos
Вы должны иметь возможность изменить свою подпись веб-сервиса на это: 'public void InsertUser (Пользователь пользователя)' WCF будет автоматически выполнять десериализацию Пользователя. –
отлично, теперь он работает;). Большое спасибо за подсказку подписи сервиса. Я изменил свой метод на: 'public void InsertUser (Пользователь пользователя) {string name = user.userName; string password = user.userPassword; ...} ' – tharos