-
Andrew_qb
- Сообщения: 17
- Зарегистрирован: 27 авг 2013, 12:14
Сообщение
Andrew_qb » 28 авг 2013, 15:26
Не могу понять из-за чего не отправляется GET запрос. На 2.3.3 норм отправляется а на 4.0.3 нет
Код: Выделить всё
package com.androidexample.httpgetexample;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.view.View.OnClickListener;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class HttpGetAndroidExample extends Activity implements OnClickListener{
String content;
Button save;
final String LOG_TAG = "myLogs";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_http_get_android_example);
save = (Button) findViewById(R.id.save);
save.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v == save)
{
GetReq();
}
}
public void GetReq() {
try {
HttpClient Client = new DefaultHttpClient();
String URL = "http://forum.startandroid.ru/posting.php?mode=post&f=41";
try {
HttpGet httpget = new HttpGet(URL);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String SetServerString = "";
SetServerString = Client.execute(httpget, responseHandler);
content = SetServerString;
Log.d(LOG_TAG, "Response: " + content);
} catch (Exception ex) {
content = "Fail!";
Log.d(LOG_TAG, "Response: " + content);
}
} catch (Exception ex) {
content = "Fail!!!";
Log.d(LOG_TAG, "Response: " + content);
}
}
}
В чём проблема?
Прошу помочь))
-
KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Сообщение
KamiSempai » 28 авг 2013, 15:51
В основном потоке с сетью работать нельзя.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
-
Andrew_qb
- Сообщения: 17
- Зарегистрирован: 27 авг 2013, 12:14
Сообщение
Andrew_qb » 28 авг 2013, 15:58
KamiSempai писал(а):В основном потоке с сетью работать нельзя.
А почему нельзя?
Тогда другой вопрос как переписать тот код что бы он работал?
-
Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Сообщение
Mikhail_dev » 28 авг 2013, 16:25
Я уже говорил, что нельзя работать в главном UI потоке. Данная политика была введена в 3-ем андроиде. Решение проблемы уже в твоей
прошлой теме было написано, использовать AsyncTask, а также и ссылку на пример дали.
-
Andrew_qb
- Сообщения: 17
- Зарегистрирован: 27 авг 2013, 12:14
Сообщение
Andrew_qb » 28 авг 2013, 16:36
Ну в общем вот что робит
Код: Выделить всё
class RequestTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... uri) {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
String responseString = null;
try {
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString = out.toString();
} else {
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.d(LOG_TAG, "Response: " + result);
}
}
@Override
public void onClick(View v) {
if (v == save) {
new RequestTask().execute("http://stackoverflow.com"); //здесь же и нашёл
}
}
А как Post отправить?))
-
KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Сообщение
KamiSempai » 28 авг 2013, 17:15
no-- писал(а):Решение проблемы уже в твоей
прошлой теме было написано, использовать AsyncTask, а также и ссылку на пример дали.
*Лицорука* Еще раз.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
-
Andrew_qb
- Сообщения: 17
- Зарегистрирован: 27 авг 2013, 12:14
Сообщение
Andrew_qb » 28 авг 2013, 17:20
Ну в общем я всё нашёл, пока ты KamiSempai *facepalm*
Код: Выделить всё
private void sendPostRequest(String givenUsername, String givenPassword) {
class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String paramUsername = params[0];
String paramPassword = params[1];
System.out.println("*** doInBackground ** paramUsername " + paramUsername + " paramPassword :" + paramPassword);
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://www.nirmana.lk/hec/android/postLogin.php");
BasicNameValuePair usernameBasicNameValuePair = new BasicNameValuePair("paramUsername", paramUsername);
BasicNameValuePair passwordBasicNameValuePAir = new BasicNameValuePair("paramPassword", paramPassword);
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
nameValuePairList.add(usernameBasicNameValuePair);
nameValuePairList.add(passwordBasicNameValuePAir);
try {
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(nameValuePairList);
httpPost.setEntity(urlEncodedFormEntity);
try {
HttpResponse httpResponse = httpClient.execute(httpPost);
InputStream inputStream = httpResponse.getEntity().getContent();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
stringBuilder.append(bufferedStrChunk);
}
return stringBuilder.toString();
} catch (ClientProtocolException cpe) {
System.out.println("First Exception caz of HttpResponese :" + cpe);
cpe.printStackTrace();
} catch (IOException ioe) {
System.out.println("Second Exception caz of HttpResponse :" + ioe);
ioe.printStackTrace();
}
} catch (UnsupportedEncodingException uee) {
System.out.println("An Exception given because of UrlEncodedFormEntity argument :" + uee);
uee.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result.equals("working")) {
Toast.makeText(getApplicationContext(), "HTTP POST is working...", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Invalid POST req...", Toast.LENGTH_LONG).show();
}
}
}
SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
sendPostReqAsyncTask.execute(givenUsername, givenPassword);
}
@Override
public void onClick(View v) {
if (v == save) {
sendPostRequest("anuja", "123");
}
}
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 28 авг 2013, 17:31
Andrew_qb писал(а):Ну в общем я всё нашёл, пока ты KamiSempai *facepalm*
молодец, копируй больше и код у тебя будет всегда работать (сарказм)

R.id.team
Политика на форуме запрещена
-
Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Сообщение
Mikhail_dev » 28 авг 2013, 17:47
С таким отношением к Java
Andrew_qb писал(а):Нее читать мне не когда (по крайней мере сейчас), да и к тому же я C# программист и я его не брошу)) Всё таки если не затруднит покажите пример.
ничего хорошего не выйдет. Ну или как вариант, писать на C# (запрос в гугл "Android C#" всё подскажет)