И я пытаюсь подключить мой Android WebApplication с помощью файла php, который находится в папке prg4 сервера wamp.
Я запускаю это приложение и проверяю пакеты, отправленные через сеть через wireshark. Сообщение успешно прошло. но соответствующее ответное сообщение гласит: 403 запрещено.
Я также создаю еще один HTML-сайт, чтобы проверить мой php-файл, и он работает хорошо.
Из-за меньшего опыта работы с Asyntask я не добавил ни одного уведомления / сообщения, чтобы показать, когда сообщение получено.
ПРИМЕЧАНИЕ: -Мой сервер Wamp работает на порту 81, и я имитировал на эмуляторе Genymotion.
package com.example.autocomplete.post2;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MyActivity extends Activity {
InputStream inputStream;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_my);
Button b=(Button)findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new LongOperation().execute("");
}
});
}
public void go(){
HttpClient htcl=new DefaultHttpClient();
HttpPost htpost=new HttpPost("http://127.0.0.1:81/");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", "hi"));
nameValuePairs.add(new BasicNameValuePair("password", "1234"));
try {
htpost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpResponse response=null;
try {
response = htcl.execute(htpost);
} catch (IOException e) {
e.printStackTrace();
}
Log.d("Response",response.toString());
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpClient htcl=new DefaultHttpClient();
HttpPost htpost=new HttpPost("http://192.168.56.1:81/prg4/upload.php");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("q", "hi"));
//nameValuePairs.add(new BasicNameValuePair("password", "1234"));
try {
htpost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpResponse response=null;
try {
response = htcl.execute(htpost);
} catch (IOException e) {
e.printStackTrace();
}return "Executed";
}
@Override
protected void onPostExecute(String result) {// might want to change "executed" for the returned string passed
// into onPostExecute() but that is upto you
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
}
Вот мой phpcode ..
$q=$_POST["q"];
if ($q=="hi"){
$fp = fopen("a.txt","w");
fputs($fp,"hiiiiiiiiiiiii");//Rewrite updated data into txt file
}
else{
$fp = fopen("a.txt","w");
fputs($fp,"lllllllll");//Rewrite updated data into txt file
}
?>
Есть три распространенных причины этой ошибки. Здесь они перечислены от наиболее вероятных до наименее вероятных.
Пустой каталог html
Убедитесь, что содержимое вашего веб-сайта было загружено в правильный каталог на вашем сервере. Не забудьте заменить example.com вашим собственным доменным именем.
Сетка: /domains/example.com/html/
Это путь, который вы будете использовать для FTP. Однако полный путь к содержанию вашего сайта: /home/00000/domains/example.com/html/. 00000 — это номер вашего сайта. Смотрите эту статью для деталей.
Если эта папка не существует, не стесняйтесь создавать ее.
Нет индексной страницы
Домашняя страница вашего сайта должна называться index.php или index.html.
Чтобы устранить эту ошибку, загрузите страницу индекса в каталог html.
Если у вас уже есть домашняя страница, называемая чем-то другим, например home.html, у вас есть несколько вариантов:
Переименуйте свою домашнюю страницу в index.html или index.php.
Настройте перенаправление на странице индекса на свою настоящую домашнюю страницу. См. Как мне перенаправить мой сайт с помощью файла .htaccess? для деталей.
Установите другую домашнюю страницу по умолчанию в вашем файле .htaccess. Javascript Kit имеет хороший пример.
Если вы не хотите, чтобы отображалась одна страница, а вместо этого хотите показать список файлов в этом каталоге, см. Раздел «Просмотр каталогов с возможностью просмотра», устранение 403 ошибок.
Разрешения и ошибки владения
Ошибка 403 Forbidden также может быть вызвана неправильным владением или правами доступа к файлам и папкам веб-материалов.
права доступа
Эмпирическое правило для правильных разрешений:
Папок: 755
Статическое содержимое: 644
Динамический контент: 700
Пожалуйста, смотрите Файл Разрешения для полного обсуждения разрешений и безопасности.
Я думаю, что есть некоторые проблемы с правами на чтение / запись файла. Пожалуйста, удалите код доступа к файлу и попробуйте
проверьте, разрешено ли на вашем хостинге удаленное управление базой данных