HttpPost

Ответить
excellion
Сообщения: 6
Зарегистрирован: 21 янв 2013, 21:31

HttpPost

Сообщение excellion » 24 янв 2013, 10:07

Доброго времени суток.... не пинайте и не бейте сильно, я только начал ковырять андройд и поэтому мало в нем понимаю, а точнее почти ничего =(
Что меня привело сюда:
Мне нужно получить данные со транички на которое есть только лишь одна строка (результат из базы) при переходе на страничку из браузера http://мойсайт.ком/test.php я вижу полученый результат из базы....

теперь мне нужно этот текст вывести в TextView.... что я для этого делаю:

создаю новый проект File -> new -> Android Application Project (Eclipse)
ну там обзываю к примеру http и т.п.
далее что я делаю:
в layout/activivti_main.xml

Код: Выделить всё

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="178dp"
        android:layout_marginTop="214dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>
далее приступаю к редактированию самого MainActiviti.java:

Код: Выделить всё

package com.example.http;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity 
{

	
	TextView tv;
	
	
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        tv = (TextView) findViewById(R.id.textView1);
        
        
        
        InputStream mInputStream = null;


        try {


                DefaultHttpClient mHttpClient = new DefaultHttpClient();
                HttpPost mHttpPost = new HttpPost("http://software44.ru/android.php");
                HttpResponse mHttpResponse = mHttpClient.execute(mHttpPost);
                HttpEntity mHttpEntity = mHttpResponse.getEntity();
                mInputStream = mHttpEntity.getContent();
                BufferedReader mReader = new BufferedReader(new InputStreamReader( mInputStream, "UTF-8"), 8); //что6ы не 6ыло крякозя6ров
                StringBuilder mStringBuilder = new StringBuilder();
                String line = null;
                while ((line = mReader.readLine()) != null) 
                {
                        mStringBuilder.append(line + "\n");
                }


                mInputStream.close();
                tv.setText(mStringBuilder.toString());
                
                
        } 
        catch (Exception e) 
        {
               tv.setText(e.getMessage());
        } 

        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
}
ничего он мне не выводит в TextView.... Перелопатил кучу форумов и статей в интернете, у всех практически одинаковые коды.... но ни один из них не сработал.... блин ради интереса проверил на c++ builder такую процедуру я написал меньше чем за 1 минуту в 2 строчки и работает великолепно, сдесь же бьюсь 3 день уже!!! =(
Помогите люди добрые новичку....

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: HttpPost

Сообщение KamiSempai » 24 янв 2013, 12:10

Зачем использовать POST если тут и GET подойдет? Вам же JSON получить надо? Вот метод которым я пользуюсь для таких целей.

Код: Выделить всё

	public static JSONObject getJSONObjectSafe(String pUrl) {
		JSONObject object = null;
		int tryCount = 0;
		do {
	        try {
			URL url = new URL(pUrl);
		        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		        InputStream inputStreem = conn.getInputStream();
		        byte[] buffer = new byte[inputStreem.available()];
		        String jsonText = "";
		        int bytesCount;
		        while((bytesCount = inputStreem.read(buffer)) > 0)
		        	jsonText = jsonText + new String(buffer, 0, bytesCount, "UTF-8");
		        object = new JSONObject(jsonText);
			} catch (Exception e) {
				object = null;
				e.printStackTrace();
			}
			tryCount++;
		} while (tryCount <= 3 && object == null);
		return object;
	}
tryCount - это заплатка на случай если с первого раза не удалось загрузить (как ни странно помогает).
Если загрузить удалось, возвращает JSONObject, если нет то null.

PS: И чуть не забыл сказать. Загрузку нужно делать в отдельном потоке, а не в onCreate. Если не вынести ее в отдельный поток, на 4 андроиде работать не будет.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

excellion
Сообщения: 6
Зарегистрирован: 21 янв 2013, 21:31

Re: HttpPost

Сообщение excellion » 24 янв 2013, 14:37

блииин вообще нифига не получается
Скиньте плиз рабочие исходники кто-нибуть... заранее ОГРОМНЕЙШЕЕ СПАСИБО!

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: HttpPost

Сообщение Finch » 24 янв 2013, 14:48

Может сразу прогу вместо тебя написать?
Всё там получается, получаешь JSON, парсишь и выводишь что нужно.
CEO of a company R.id.team

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: HttpPost

Сообщение KamiSempai » 24 янв 2013, 15:20

excellion писал(а):блииин вообще нифига не получается
Скиньте плиз рабочие исходники кто-нибуть... заранее ОГРОМНЕЙШЕЕ СПАСИБО!
Вы видимо не поняли. Я скинул метод который возвращает JSONObject а не String.
Я просто подсмотрел ссылку которая в коде находится, а там JSON вот и решил сразу все в одном скинуть. Если нужен только текст, удалите в методе все что касается JSON и возвращайте jsonText вместо object. Функция принимает на вход строку с адресом.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

excellion
Сообщения: 6
Зарегистрирован: 21 янв 2013, 21:31

Re: HttpPost

Сообщение excellion » 24 янв 2013, 20:57

Код: Выделить всё

public void getJSONObjectSafe(String pUrl) 
    {
        
        
        
        try 
        {
                URL url = new URL(pUrl);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                InputStream inputStreem = conn.getInputStream();
                byte[] buffer = new byte[inputStreem.available()];
                
                int bytesCount;
                while((bytesCount = inputStreem.read(buffer)) > 0)
                 
                	jsonText = new String(buffer, 0, bytesCount, "UTF-8");
                tv.setText(jsonText);
                


        } 
        catch (Exception e)
        {      
        	 tv.setText( e.getMessage());
        }


      }
всеравно в TextView пустота =(

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: HttpPost

Сообщение rezak90 » 24 янв 2013, 21:08

а вы ещё на 4-м андроиде запустите будет вообще красота =)
R.id.team
Политика на форуме запрещена

excellion
Сообщения: 6
Зарегистрирован: 21 янв 2013, 21:31

Re: HttpPost

Сообщение excellion » 24 янв 2013, 21:12

на 4 и запускаю.... блин ребят всесто того чтобы издеваться над новечком помогите с кодом лучше.... я уже замучался =(

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: HttpPost

Сообщение rezak90 » 24 янв 2013, 22:49

новичёк вместо того что бы идти постепенно от шага к шагу пытается из огня да в полымя...
под моей иронией с предыдущего поста имелось в виду что код в четвёрке работать не будет, в двойке работает, на вопрос почему? даю ответ на перёд - вся сетевая активнаость должна происходить в отдельном потоке.
R.id.team
Политика на форуме запрещена

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: HttpPost

Сообщение KamiSempai » 25 янв 2013, 12:47

excellion писал(а):на 4 и запускаю.... блин ребят всесто того чтобы издеваться над новечком помогите с кодом лучше.... я уже замучался =(
Вы вообще читаете, что вам пишут?
KamiSempai писал(а):PS: И чуть не забыл сказать. Загрузку нужно делать в отдельном потоке, а не в onCreate. Если не вынести ее в отдельный поток, на 4 андроиде работать не будет.
И даже если запустить Ваш код в отдельном потоке, работать все равно не будет. Вот урок объясняющий почему http://startandroid.ru/ru/uroki/vse-uro ... anija.html
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: HttpPost

Сообщение damager82 » 30 янв 2013, 14:51

А в манифест права на инет прописали? )
Логи то вам чего выдают?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Ответить