FINNNNNNALY выяснил это !.
Не уверен, какие из них были на 100% нужны, но вот что я сделал, чтобы помочь другим бедным душам.
- Убедитесь, что ваш веб-интерфейс создан без дополнительной обертки, добавленной из WCF, т.е. в виде простого текста. (не критично)
- Избавьтесь от пробелов в вашем URL. Похоже, OREO сделает это за вас. Более ранние версии не должны. Код для этого: URL-адрес URL = новый URL-адрес (query.replace ("", "% 20"));
- Счастливый танец
В целом вызов должен быть следующим:
URL url = new URL(query.replace(" ","%20"));
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int i = urlConnection.getResponseCode();
InputStream inputs;
if (i < HttpURLConnection.HTTP_BAD_REQUEST) {
inputs = urlConnection.getInputStream();
} else {
// Error
inputs = urlConnection.getErrorStream();
return "-1";
}
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
result.append(line);
}
Чтобы установить форматирование для необработанной строки в WCF, см. Следующее.
В *****. Cs
[OperationContract]
[WebGet( UriTemplate = "jsonFindTableBare/{id}")]
Stream DoWork(string id);
В svc.cs
public Stream DoWork(String id)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json; charset=utf-8";
String str = "YOUR RESPONSE HERE";
WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
return new MemoryStream(Encoding.UTF8.GetBytes(str));
}
Спасибо за помощь, Мангал. Цени это.