В Android, как разместить данные в веб-сервис, который создается в WCF?
Я новичок в C# веб-сервис, разработанный с использованием фреймворка WCF. И я должен разместить данные в URL. Мой URL-адрес похож на http://www.example.com/abc/DGLC.svc/login и я должен передавать данные с помощью метода post. И параметры как следовать в следующем формате.
{
"Имя пользователя": "Администратор",
"Пароль": "abcd1234",
"DiviceType": "Windows",
"UniqueID": "deviceidneedtopasshere"
}
Пожалуйста, помогите мне, как реализовать этот вид WS. Заранее спасибо.
1 ответ
Решение
Создайте класс, представляющий поля вашего JSON. и в вашем веб-сервисе передайте это в параметре метода. и запустите этот метод в вашем backthread (asyncTask)
public static String postAPIResponse(String url, String data) {
HttpURLConnection con = null;
InputStream inputStream;
StringBuffer responses = null;
try {
URL urlObject = new URL(url);
con = (HttpURLConnection) (urlObject.openConnection());
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setRequestProperty("Content-Length", Integer.toString(data.getBytes().length));
con.setRequestProperty("Content-Language", "en-US");
if (Cookie.getCookie() != null)
con.addRequestProperty("Cookie", Cookie.getCookie());
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(data);
wr.flush();
wr.close();
//Get Response
if (con.getResponseCode() == 200) {
InputStream is = con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
responses = new StringBuffer();
while ((line = rd.readLine()) != null) {
responses.append(line);
}
rd.close();
} else {
inputStream = new BufferedInputStream(con.getErrorStream());
return convertInputStreamToString(inputStream);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
assert con != null;
con.disconnect();
}
return responses != null ? responses.toString() : "";
}
static public String convertInputStreamToString(InputStream inputStream) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
String result = "";
while ((line = bufferedReader.readLine()) != null) {
result += line;
}
/* Close Stream */
inputStream.close();
return result;
}
где data - строка объекта json new JsonObject.accumulate()... и т. д. для сопоставления с вашим сервисным объектом