Spedziłem cały wczorajszy wieczór nad tym i nie moge zanleźć rozwiązania. Mam takie zapytanie napisane w C#:
public void GetData()
{
WebRequest webRequest;
webRequest = WebRequest.Create("http://myserviceurl" + Stopwatch.GetTimestamp().ToString() + "");
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
}
public void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
Stream postStream = webRequest.EndGetRequestStream(asynchronousResult);
string json = "{\"request\":\"" +itemId+"\"}";
string postData = "method=findTimes&p0=" + json + "";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
}
public void GetResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response;
response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamReader = new StreamReader(streamResponse);
var Response = streamReader.ReadToEnd();
streamResponse.Close();
streamReader.Close();
response.Close();
if (Response == "")
{
}
else
{
Dispatcher.BeginInvoke(() => { DecodeResponse(Response.ToString()); });
}
}
catch (WebException)
{
//error
}
}
Próbuję zrobić z tego zapytanie w Androidzie.
public void GetData()
{
String postData = "method=findTimes&p0={\"request\":\"003\"}";
performPost(convertToUTF8(postData));
}
public static String convertToUTF8(String s) {
String out = null;
try {
out = new String(s.getBytes("UTF-8"), "ISO-8859-1");
} catch (java.io.UnsupportedEncodingException e) {
return null;
}
return out;
}
public void performPost(String encodedData) {
HttpURLConnection urlc = null;
OutputStreamWriter out = null;
DataOutputStream dataout = null;
BufferedReader in = null;
try {
URL url = new URL("http://myserviceurl" + System.nanoTime());
urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestMethod("POST");
urlc.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
dataout = new DataOutputStream(urlc.getOutputStream());
// perform POST operation
dataout.writeBytes(encodedData);
int responseCode = urlc.getResponseCode();
in = new BufferedReader(new InputStreamReader(urlc.getInputStream()),8096);
String response;
// write html to System.out for debug
while ((response = in.readLine()) != null) {
System.out.println(response);
}
in.close();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Wykrzacza się na dataout i tu podejrzewam ze jest cos z kodowaniem to UTF8. W C# jak widac wyglada to nieco inaczej. Byłbym wdzieczny za pomoc.