Подключение Android - Служба WCF должна вернуть JSON - PullRequest
0 голосов
/ 13 сентября 2010

Я подключаю свое приложение Android к сервису wcf, и в моем Log.i я вижу, что он возвращает правильные данные. Единственное, что я хочу обрабатывать как JSON, но мой сервис отправляет как XML- (я думаю):Вот как выглядит код в приложении:

if (entity != null) 
{
    InputStream instream = entity.getContent();  
    BufferedReader reader = new BufferedReader(new InputStreamReader(instream));  
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null){
        sb.append(line + "n");  
    }      

    String result = sb.toString();  
    Log.i(TAG,result);  
    instream.close();  

    JSONObject json=new JSONObject(result);  

    JSONArray nameArray=json.names();  
    JSONArray valArray=json.toJSONArray(nameArray);  

, и мой пример метода выглядит следующим образом, я не знаю, как вернуть правильные данные JSON из веб-поиска WCF:

/// <returns>An enumeration of the (id, item) pairs. Returns null if no items are present</returns>
protected override IEnumerable<KeyValuePair<string, SampleItem>> OnGetItems()
{
    // TODO: Change the sample implementation here
    if (items.Count == 0)
    {
        items.Add("A", new SampleItem() { Value = "A" });
        items.Add("B", new SampleItem() { Value = "B" });
        items.Add("C", new SampleItem() { Value = "C" });
    }
    return this.items;
}

Это ошибка, которую я получаю: 09-12 17: 11: 04.924: WARN / System.err (437): org.json.JSONException: Value

Ответы [ 3 ]

1 голос
/ 17 октября 2010

Это похоже на код из WCF REST Starter Kit, шаблона REST Collection, поэтому он уже должен поддерживать как XML, так и JSON.Это URI службы, который вы указываете на стороне клиента, который возвращает представление XML или JSON.По умолчанию он отправляет XML, но если вы поместите «? Format = json» в и URI службы, он отправит ресурс в формате JSON.

Полезную информацию можно получить, используя встроенное описание службывозвращается в ATOM (если я хорошо помню) с / help после служебного URI что-то вроде: http://localhost/servicetest/Service.svc/help

1 голос
/ 13 сентября 2010

Добавить:

 [WebGet(ResponseFormat = WebMessageFormat.Json)]

В качестве атрибута вашего метода службы WCF. Измените WebGet на WebInvoke, если вы не используете GET-запросы для вызова службы.

0 голосов
/ 13 сентября 2010

Вот так выглядит метод wcf serivce: он возвращает коллекцию значений. Я добавил [WebGet(ResponseFormat = WebMessageFormat.Json)], но все равно он не работает.

[WebGet(ResponseFormat = WebMessageFormat.Json)]
    protected override IEnumerable<KeyValuePair<string, SampleItem>> OnGetItems()
    {
        // TODO: Change the sample implementation here
        if (items.Count == 0)
        {
            items.Add("A", new SampleItem() { Value = "A" });
            items.Add("B", new SampleItem() { Value = "B" });
            items.Add("C", new SampleItem() { Value = "C" });
        }
        return this.items;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...