Я пытаюсь вызвать этот URL с андроидом HttpGet иметь JSon массив направлений: http://maps.googleapis.com/maps/api/directions/json?origin=Adelaide,SA&destination=Adelaide,SA&waypoints=optimize:true%7cBarossa+Valley,SA%7cClare,SA%7cConnawarra,SA%7cMcLaren+Vale,SA&sensor=false "ошибки при вызове HttpGet в андроиде (получить направления Google)
В основном это то, что я сделал до сих пор:
1) Я первый создал AsyncTask, чтобы вызвать направления Google и войти результат извлеченный:
public class MyTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
InputStream is = null;
String result = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(params[0]);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
int lenght = (int) entity.getContentLength();
StringBuffer buffer = new StringBuffer(lenght);
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection"+e.toString());
}
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line="0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
Log.i("Result", result);
return result;
}
}
2) в основной деятельности, я заставлю выполнить асинхронную задачу передавая ему URL :
MyTask t = new MyTask();
t.execute(urlString.toString());
где urlString является StringBuilder. Я попытался построить этот адрес несколькими способами, даже пытаясь кодировать его с помощью URLEncoder.encode (myUrl), но я всегда получаю исключение, которое равно Ошибка в http connectionjava.lang.NegativeArraySizeException и я могу Извлеките json-данные из Google. Как правильно отформатировать этот URL-адрес? Моя цель - добиться того же результата, что и этот парень (в json part): http://blog.synyx.de/2010/06/routing-driving-directions-on-android-part-1-get-the-route/
Спасибо!
Stacktrace в logcat должен указывать на строку, в которой он терпит неудачу, p –
Ну, это указывает на следующую строку StringBuffer buffer = new StringBuffer (длина); поэтому кажется, что ответ от httpget пуст (вероятно, из-за плохого отформатированного запроса!). – jiraya85
однако он еще не работает! – jiraya85