WCF サービスを作成し、J2ME でこのサービスを使用した後。私のWCFサービスは次のとおりです。
IService:
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetByCity/Limit={limit}", BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
ItemList GetByCity(string limit);
Service.CS :
public ItemList GetByCity(string limit)
{
DataTable City = ds.Tables["City"];
var items = WithHTML(City, limit);
return new ItemList { Items = items };
}
public List<Item> WithHTML(DataTable City, string limit)
{
var items = (from d in City.AsEnumerable()
where d.Field<string>("strMainHin") != string.Empty
orderby d.Field<DateTime>("dtPosted")
select new Item
{
ItemId = d.Field<Int32>("intId").ToString(),
ItemLine = htmlEscapes(d.Field<string>("strMainHin")),
Photo = @"http://192.168.1.17:801/ImageById/" + d.Field<Int32>("intId") + ".jpg"
}).Take(Convert.ToInt32(limit)).ToList();
return items;
}
public string htmlEscape(string input)
{ var output = Regex.Replace(input, @"&#([0-9]*);", x => new String((char)int.Parse(x.Groups[1].Value), 1));
return output;
}
URL でのこのサービスの出力は次のようになりますhttp://192.168.1.17:803/Patrika/Service.svc/GetByCity/Limit=2
。
{"Items":[{"ItemLine":"डेढ़ करोड़ का क्रिकेट सट्टा पकड़ा","ItemId":"821745","Photo":"http:\/\/192.168.1.17:801\/ImageById\/821745.jpg"},{"ItemLine":"पार्किग का इंतजाम नहीं, तो जब्त होंगे वाहन","ItemId":"824837","Photo":"http:\/\/192.168.1.17:801\/ImageById\/824837.jpg"}]}
しかし、このリンクを介して J2ME でこのサービスを使用する場合: 'http://192.168.1.17:803/Patrika/Service.svc/GetByCity/Limit=2' Unicode または UTF-8 J2ME で返す応答は次のとおりです。
{"ItemLine":"डेढ़ करोड़ का क�रिकेट सट�टा पकड़ा"}
すべてが順調に進んでいますが、ユニコードを含むこの文字列だけが間違った出力を出しています。次に、次のデータを1つだけ送信しようとしました:
{"ItemLine":"डेढ़ करोड़ का क्रिकेट सट्टा पकड़ा"}
次に、J2ME の終わりに、この文字列を JSON オブジェクトに取り、次のようなラベルに入れました。
Label l1=new Label("ItemLine");
this.component.add(l1);
しかし、出力は上記の悪いjson文字列と同じです。