我用 C# 编写了一个 REST Web 服务。获取请求工作正常,但插入、更新和删除不行。当我尝试通过 REST 服务将 Android 平板电脑(客户端)中的一些值插入 mySQL 数据库时,出现错误:不允许使用方法
我将一个 JSON 字符串从 android 客户端发送到 Web 服务:
在 Android 开发者工具(日食)中:
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);
服务方式:
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;
}
}
当我启动 Web 服务并尝试通过 android 应用程序插入值时,没有任何反应。我认为,来自应用程序的值不会到达网络服务。但我不知道为什么。如果有人可以帮助我,那就太好了:)。
提前致谢