Когда я делал это в прошлом, я использовал Fiddler2, чтобы определить разницу между отправкой моего тестового приложения .Net в качестве запроса и отправкой моего приложения Android.В заголовках может быть несоответствие, способ упаковки ваших пост-параметров и т. Д. Кроме того, Fiddler2 покажет вам коды ответа и ответа.Это должно дать вам всю информацию, которая вам нужна, чтобы понять это.
http://www.fiddler2.com/fiddler2/
РЕДАКТИРОВАТЬ
После разговора в комментарияхВот обновленный ответ на вопрос, который, по моему мнению, является вашей проблемой.
Мне не удалось найти код для оригинального POC, который я сделал для связи между клиентом Android и службой WCF, но я нашел какой-то другойкод, где я публикую данные JSON.То, что я делаю иначе, чем вы, кажется, я передаю свою полезную нагрузку в виде пары имя / значение, поэтому она становится ключевой, когда она попадает в сервис.Похоже, вы передаете просто необработанную строку данных json, поэтому возможно, что служба ожидает ваши данные json в качестве значения пары имя-значение, для которой указано имя аргумента в вашей службе.
Чтобы перефразировать два подхода, вот метод, который вы используете для передачи необработанных строковых данных в качестве сущности.
JSONObject json = new JSONObject();
json.put("year", 2011);
StringEntity entity = new StringEntity(json.toString());
request.setEntity(entity);
Вот пример моих данных, которые я публикую как NameValuePair
List<NameValuePair> params = new ArrayList<NameValuePair>(1);
params.add(new BasicNameValuePair("SomeKey", someJsonString));
request.setEntity(new UrlEncodedFormEntity(params));
Если вы хотите передать сложный объект, вы можете создать его как строку json, как в моем примере используется выше.ИЛИ ... вы можете просто передать «год» в качестве ключа и «2011» в качестве значения, и это должно быть значение вашей строковой аргументации, когда она попадает в ваш веб-метод WCF.