Json对象返回给gets服务,该gets服务将i/p作为
[OperationContract(Name = "Create")]
[WebInvoke(UriTemplate = "/Create/Data", Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json)]
bool CreateCustomer(StringBuilder objCustomer);
//在我的服务文件中,im将i/p对象反序列化为我的类对象,并插入
public bool Create(StringBuilder strObj)
{
JavaScriptSerializer js = new JavaScriptSerializer();
Customer custObj = js.Deserialize<Customer>(strObj.ToString());
bool Inserted = false;
//连接已建立,数据已放入
从im asp.net客户端,obj被序列化为json格式,并且可以插入到我的数据库中,但是从android,他们发送的JSON对象不能被我的服务识别。但是对它们的响应是"OK 200“..
android代码是
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
JSONObject json = new JSONObject();
String URL ="http://10.242.48.54/restinsert/Service1.svc/Create/Data";
try{
HttpPost post = new HttpPost(URL);
json.put("CNo",200);
json.put("CName","addme");
StringEntity se = new StringEntity(json.toString());
se.setContentType("application/json; charset=utf-8");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"));
post.setHeader("Accept","application/json");
post.setHeader("Content-type","application/json; charset=utf-8");
String ss= post.toString();
response = client.execute(post);
创建了一个用于序列化和反序列化的新类
public class Json
{
public string JsontoString(string obj)
{
JavaScriptSerializer js = new JavaScriptSerializer();
StringBuilder sb = new StringBuilder();
js.Serialize(obj, sb);
return sb.ToString();
}
public string StringtoJson(string obj)
{
JavaScriptSerializer js = new JavaScriptSerializer();
Customer custObj = js.Deserialize<Customer>(obj.ToString());
return custObj.ToString();
}
}
}
发布于 2010-10-22 11:37:36
我从未使用过Json序列化程序,但对WCF如何进行反序列化略知一二,我想说您不能将StringBuilder作为参数。
只需将操作签名更改为:
bool CreateCustomer(Customer customer);
WCF想要自己进行序列化和反序列化,所以让它来做吧。
发布于 2010-12-15 05:33:57
StringEntity se = new StringEntity(json.toString(), "utf-8");
https://stackoverflow.com/questions/3994622
复制