Android BufferedInputStream HTTP POST / GET - PullRequest
0 голосов
/ 01 июля 2011

Я использую BufferedInputStream Для HTTP POST / GET

Но я получаю некоторые ошибки ниже

  1. java.io.FileNotFoundException: http://XX.XX.XX.XX/WebWS/data.aspx
  2. Конечная точка транспортане подключен

Зачем получать эту ошибку.Мой код ниже

URL url = new URL(glob.postUrl);

    HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

    try {

        httpConn.setDoInput(true);
        httpConn.setDoOutput(true);
        httpConn.setRequestMethod("GET");
        httpConn.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        httpConn.setRequestProperty("Content-Language", "TR");      
        httpConn.setConnectTimeout(12000);


        Iterator<String> reqProps = hMap.keySet().iterator();
        while (reqProps.hasNext()) {
            String key = reqProps.next();
            String value = hMap.get(key);
            httpConn.addRequestProperty(key, value);
        }

        InputStream in = new BufferedInputStream(httpConn.getInputStream());

        StringBuilder builder = new StringBuilder();
        String line;
        try {
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(in, "UTF-8"));
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }
        } finally {
            in.close();
        }
        httpConn.disconnect();

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Есть ли причина, по которой вы не используете HttpClient?

Вы можете заменить свой код на что-то вроде:

HttpContext httpContext = new BasicHttpContext();
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
HttpResponse response = httpClient.execute(httpGet, httpContext);
int statusCode = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
String page = EntityUtils.toString(entity);

Вы можете настроить HttpClient с ClientConnectionManager и HttpParams для обеспечения безопасности и различных параметров http для клиента при инициализации (множество примеров вокруг при поиске по именам классов).

0 голосов
/ 01 июля 2011
Известно, что

HttpURLConnectionImpl.getInputStream() выдает FileNotFoundException, если код состояния ответа HTTP равен 400 или выше, то есть для любого состояния ошибки на стороне сервера. Вы должны проверить, что на самом деле представляет собой код состояния, чтобы получить подходящую отладочную информацию.

Тем не менее, я второе предложение Марка Фишера об использовании HttpClient, который AFAIK является предпочтительным способом работы с HTTP на Android.

...