私はRESTFull WCF Servicesの新機能で、Androidアプリからそれらを呼び出すのは新機能です。ここに私のWCFサービスがあります:jsonarrayのテキストは{my return values}の文字1で '['で始まらなければなりません。
[ServiceContract]
public interface IPeople
{
[OperationContract]
void DoWork();
[WebGet(UriTemplate = "/GetPeople",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
[OperationContract]
string GetPeople();
}
インタフェースの実装:
公共の文字列GetPeople(){ PeoplesEntities QE =新しいPeoplesEntities();
var result = from q in qe.tPeople
select q;
int count = result.Count();
int index = new Random().Next(count);
tPeople people = result.OrderBy(a=>a.ID).Skip(index).FirstOrDefault();
// result.First().ToString();
return people.FirstName + " - " + people.LastName;
}
、これは私がアンドロイドサービスを通してそれを消費してる方法です:
試し{
HttpGet request = new HttpGet(SERVICE_URI + "/GetPeople");
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(request);
HttpEntity responseEntity = response.getEntity();
// Read response data into buffer
char[] buffer = new char[(int)responseEntity.getContentLength()];
InputStream stream = responseEntity.getContent();
InputStreamReader reader = new InputStreamReader(stream);
reader.read(buffer);
stream.close();
JSONArray plates = new JSONArray(new String(buffer));
return new String(buffer);
} catch (Exception e) {
e.printStackTrace();
return e.toString();
}
}
私が手に例外が対象に記載されているものです。奇妙なのは、例外で返されると期待される値です。なぜそれが大括弧を期待しているのかわからない。
参考までに、私が使用したコードのほとんどは、オンラインの例から直接取ったものです。どんな助けでも大歓迎です。ありがとう。
JSONとhttp認証は、私にアンドロイドの頭痛を引き起こしました。しかし、保存して、あなたはそれを通過します。 JSOn構造体についてわからない場合は、C#コードが何をしているのかを知るために、JSON構造体の作成方法を学び、それを読んでおくことをお勧めします。 – JonWillis