Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: отправка post-запроса fileupload выдает 403

Всем привет,
В проекте с jquery 3.1.0 
для отправки post-запроса работает нормально:
Код

            var HRef = "{{ base_url }}admin/attribute/update_attribute_item"
            var DataArray = {
                "attribute_id": '{{ id }}',
                "attribute_item_id":current_attribute_item_id,
                "item_value": encodeURIComponent(attribute_item_item_value),
                "item_label": encodeURIComponent(attribute_item_item_label),
                'csrf_test_name': $.cookie('csrf_cookie_name') // TODO : UNCOMMENT ON LIVE
            };

            jQuery.ajax({
                url: HRef,
                type: "POST",
                data: DataArray,
                success: onChangedAttributeItem,
                dataType: "json"
            });



На другой  форме с запросом при выборе картинки fileupload ( jQuery File Upload Plugin 5.31.6 ) 
Код

                var HRef = "{{ base_url }}admin/product/upload_image_to_tmp_product/product_id/" + product_id
                $('.product_image_fileupload').fileupload({
                    url: HRef,
                    type: "POST",
                    'csrf_test_name': $.cookie('csrf_cookie_name'), 
                    dataType: 'json',
                    done: function (e, data) {

          
Получаю ошибку 
403 (Forbidden)

Помнится на  jquery 1 таких проблем не было
Или проблема в другом ?

И я скачал проект целиком отсюда , но не нашел а какая у них стабильная версия?
В требованиях написано jQuery v. 1.6+...
                                                     
  Спасибо!

Добавлено через 1 минуту и 15 секунд
Да что все новые посты идут в Andorid?
Перенаправьте пожалуйста в Javascript...
Ответ:
Всем привет,
В проекте с jquery 3.1.0 
для отправки post-запроса работает нормально:
Код

            var HRef = "{{ base_url }}admin/attribute/update_attribute_item"
            var DataArray = {
                "attribute_id": '{{ id }}',
                "attribute_item_id":current_attribute_item_id,
                "item_value": encodeURIComponent(attribute_item_item_value),
                "item_label": encodeURIComponent(attribute_item_item_label),
                'csrf_test_name': $.cookie('csrf_cookie_name') // TODO : UNCOMMENT ON LIVE
            };

            jQuery.ajax({
                url: HRef,
                type: "POST",
                data: DataArray,
                success: onChangedAttributeItem,
                dataType: "json"
            });



На другой  форме с запросом при выборе картинки fileupload ( jQuery File Upload Plugin 5.31.6 ) 
Код

                var HRef = "{{ base_url }}admin/product/upload_image_to_tmp_product/product_id/" + product_id
                $('.product_image_fileupload').fileupload({
                    url: HRef,
                    type: "POST",
                    'csrf_test_name': $.cookie('csrf_cookie_name'), 
                    dataType: 'json',
                    done: function (e, data) {

          
Получаю ошибку 
403 (Forbidden)

Помнится на  jquery 1 таких проблем не было
Или проблема в другом ?

И я скачал проект целиком отсюда , но не нашел а какая у них стабильная версия?
В требованиях написано jQuery v. 1.6+...
                                                     
  Спасибо!

Добавлено через 1 минуту и 15 секунд
Да что все новые посты идут в Andorid?
Перенаправьте пожалуйста в Javascript...
Вопрос: Отправить post запрос с параметрами на сайт и получить результат

Всем привет! Делаю проект для сайта школы. Нужно отправить post запрос с параметрами на сайт и получить результат.
Стандартный способ не помогает, приложение вылетает при включении (делала по инстукциям, в манифесте разрешение прописала). Перебрала несколько библиотек, ничего не выходит
В программировании на андроид опыта нет, писала приложение первый раз, всё получается, кроме отправки post запроса. В будущем планирую изучить андроид и улучшать приложение, но сейчас нужно сделать рабочую версию как можно скорей. Поделитесь, пожалуйста, рабочим способом отправки post запроса.
Ответ: Привет!

Прежде всего, если приложение вылетает при включении, то, надо посмотреть красные строчки в LogCat, туда записывается подробный текст ошибки, это очень важный навык.
В крайнем случае, используйте try-catch и выводите информацию из Exception в Toast...

Если проблема, действительно, в том, что запрос отправляется из потока UI, то создайте новый поток. Самый простой способ - Thread...
Java
1
2
3
4
5
6
7
8
9
10
new Thread(new Runnable() {
    public void run() {
        /*
         * Здесь отправлять запрос
         * TODO: кое-что придется подправить, например, this заменить на MainActivity.this,
         * переменные, которые берутся извне потока, сделать final и так далее,
         * на что ругается компилятор, то и исправлять
         */
    }
}).start();
Дальше - лучше, можно перейти на AsyncTask, можно создать свой класс с потоком внутри (а, не усложнять код снаружи), и так далее...
Вопрос: RESTful-сервиса с Spring for Android POST запрос

Здравствуйте коллеги.

Отправляю GET запрос на сервер:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    private class DTOTask extends AsyncTask<Void, Void, DTO> {
 
        @Override
        protected DTO doInBackground(Void... params) {
            RestTemplate template = new RestTemplate();
            template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
 
            return template.getForObject(Constants.URL.GET_URL, DTO.class);
        }
 
        @Override
        protected void onPostExecute(DTO dto) {
            List<DTO> data = new ArrayList<>();
            data.add(dto);
 
            adapter.setData(data);
        }
    }
Сам DTO файл:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Date;
 
public class DTO {
 
    private long id;
    private String title;
    private Date remDate;
 
    public DTO (String title) {
        this.title = title;
    }
 
    public DTO () {
    }
 
    public long getId() {
        return id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public Date getRemDate() {
        return remindDate;
    }
 
    public void setRemDate(Date remDate) {
        this.remDate = remDate;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
}
Сервер выдает JSON.
Подскажите пожалуйста как отправить POST запрос.
Необходимо отправить логин и пароль получив JSON.
Ответ: Отправлю запрос с помощью OkHTTP на авторизацию, а возможно ли использовать вместе с этим и Jackson?
Вопрос: Реализовать простой post запрос на php сервер

Приветствую.
Хотелось бы пример, но не от балды. В гугле есть вагон примеров, но какой самый оптимальный не ясно. Есть активити с 4-мя кнопками, при нажатии на каждую из которых нужно просто отправлять post-данные на определенный адрес и получать ответ.
Ответ: Я Вам скинул самый простой рабочий пример. В других библиотеках сложнее, по крайней мере для меня, разобраться.

Сейчас вот часто используют библиотеку Retrofit 2. Лучше, наверно, будет использовать её. В сети много информации и примеров по работе с этой библиотекой.
Вопрос: Не отправляет post запрос в эмуляторе android 4.4

Есть приложение, которое отправляет и получает данные из нета посредством пост запроса, в андройд 2.2 все работает хорошо, в андройд 4.4 не работает, в чем может быть проблема ?
Ответ: EgorDybovik, потому что до 3.0 было можно так делать, а после уже нельзя.
Вопрос: Обработка результата POST-запроса в Android

Приветствую, уважаемые программисты.
Изучаю программирование на Android. Пытаюсь сделать простенькое клиент-серверное приложение.
Задачу следующая - с android-а на сервер отправляется post запрос с данными для регистрации пользователя, сервер в ответ отправляет "yes" или "no", в зависимости от того произошла регистрация или нет.
Веб-сервер - Apache/2.4.17 (Win64) PHP/5.6.15.
Клиент - эмулятор Android API 15.

Код на Андроид:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
private void insertToDatabase(String name, String pass, String firs, String last, String uinf){
        class SendPostReqAsyncTask extends AsyncTask<String, Void, String> {
            @Override
            protected String doInBackground(String... params) {
                String paramUsername = params[0];
                String paramPassword = params[1];
                String paramFirstName = params[2];
                String paramLastName = params[3];
                String paramUserInfo = params[4];
 
 
                String name = editTextUsername.getText().toString();
                String pass = editTextPassword.getText().toString();
                String firs = editTextFirstName.getText().toString();
                String last = editTextLastName.getText().toString();
                String uinf = editTextUserInfo.getText().toString();
 
 
                HashMap<String, String> postDataParams = new HashMap<String, String>();
                postDataParams.put("username", name);
                postDataParams.put("password", pass);
                postDataParams.put("first_name", firs);
                postDataParams.put("last_name", last);
                postDataParams.put("user_info", uinf);
 
                URL url;
                String response = "";
                try {
                    url = new URL("http://mysyte.ru/test/create-new-user.php");
 
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setReadTimeout(15000);
                    conn.setConnectTimeout(15000);
                    conn.setRequestMethod("POST");
                    conn.setDoInput(true);
                    conn.setDoOutput(true);
 
 
                    OutputStream os = conn.getOutputStream();
                    BufferedWriter writer = new BufferedWriter(
                            new OutputStreamWriter(os, "UTF-8"));
                    writer.write(getPostDataString(postDataParams));
 
                    writer.flush();
                    writer.close();
                    os.close();
                    int responseCode=conn.getResponseCode();
 
                    if (responseCode == HttpsURLConnection.HTTP_OK) {
                        String line;
                        BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
                        while ((line=br.readLine()) != null) {
                            response+=line;
                        }
                    }
                    else {
                        response="";
 
                        throw new HttpException(responseCode+"");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
 
                mAnswer = response;
                return mAnswer;
            }
 
            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(mAnswer);
 
                Toast.makeText(getApplicationContext(), mAnswer, Toast.LENGTH_LONG).show();
 
                if (mAnswer == "no")
                {Toast.makeText(getApplicationContext(),"Не получилось, попробуйте другой логин", Toast.LENGTH_SHORT).show();}
                else if (mAnswer == "yes")
                {Toast.makeText(getApplicationContext(),"Вы зарегистрированы", Toast.LENGTH_SHORT).show();                    
 
                    SharedPreferences.Editor editor = mSettings.edit();
                    editor.putString(APP_PREFERENCES_USERNAME, mUsername);
                    editor.putString(APP_PREFERENCES_PASSWORD, mPassword);
                    editor.putString(APP_PREFERENCES_FIRST_NAME, mFirstName);
                    editor.putString(APP_PREFERENCES_LAST_NAME, mLastName);
                    editor.putString(APP_PREFERENCES_USER_INFO, mUserInfo);
                    editor.apply();
 
 
                    Intent intent_inbox = new Intent(RegistrationActivity.this, AboutActivity.class);
                    startActivity(intent_inbox);
                }
            }
        }
        SendPostReqAsyncTask sendPostReqAsyncTask = new SendPostReqAsyncTask();
        sendPostReqAsyncTask.execute(name, pass, firs, last, uinf);
    }
Код на PHP
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
  define('HOST','localhost');
  define('USER','root');
  define('PASS','000000');
  define('DB','test_db');
  $con = mysqli_connect(HOST,USER,PASS,DB);
 
  $username = $_POST['username'];
  $password = $_POST['password'];
  $first_name = $_POST['first_name'];
  $last_name = $_POST['last_name'];
  $user_info = $_POST['user_info'];
 
  $sql = "insert into userlist (username, user_password, user_first_name, user_last_name, user_info) 
            values ('$username','$password', '$first_name', '$last_name', '$user_info')";
  
 
  if(mysqli_query($con,$sql)){
    echo 'yes';  
  }
  else{
    echo 'no';
   }
    
  mysqli_close($con);
?>
По задумке приложение получив ответ ("yes" или "no") сначала выводит этот ответ в виде всплывающего сообщения, потом обрабатывает полученный ответ.
Так вот проблема в том, что ответ приложение выводит, но не обрабатывает.
С БД все в порядке - данные заносятся исправно. Проблема именно в обработке ответа на стороне клиента.
Если я правильно понимаю, это связано с кодировками, т.е. веб-сервер отправляет ответ в UTF-8, а в Java String-и в UTF-16 или UCS-2(точно не знаю). Пытался поменять кодировку файла create-new-user.php на UCS-2 в Notepad++ - в этом случае отправка данных вообще не работает и во всплывающем сообщении отображается содержимое всего файла(с двумя непонятными символами перед текстом).
Кто уже сталкивался с проблемой или знает как решить - подскажите нубу
Ответ: Спасибо огромное, все заработало
Даже не верится, что было так просто
Вопрос: Как отправить post запрос php файлу?

Добрый вечер всем. 3-й день пробую отправить моё приложение POST запрос PHP файлу. Столкнулся с проблемой того, что компилятор не хочет пропускать некоторые строки.
Java
1
2
        URL url =new URL("http://www.site.com/file.php");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
На что жалуется компилятор, выдавая ошибку "Unhandled exception: java.io.IOExceptio". Как исправить данную проблему?
Или каким другим образом можно отправить POST запрос другим способом?
Ответ: Возможно компилятор хочет увидеть "try catch" ?
Вопрос: Retrofit 2 post запрос

Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с проблемой
как реализовать POST запрос. ( GET запрос у меня то работают, и я на аналогии с их примером и примером с нета сделал Post запрос. В реалиях я бы добавлял на сервере сразу в бд инфу. Но так как я делаю все последовательно у меня в примере ПХП функции либурда, проще говоря тестил как исправить ошибку, сначала вобще хотел передавать Bollean True\False - добавил\недобавил список продуктов который получил от андроид приложения. а то что щас пытается отправить обратно список - это експерементировал думал может не правильно перелаю булеан переменную, и решил заменить на то что уже работало в GET

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference

вот в етой строчке
Java
1
Log.d("gt", response.body().getClass().getName().toString());
возращает ошибку. Проще говоря запрос возращает нуль...


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
 
public interface orderProducts {
    @POST("/api")
    Call<List<Product>> gt(@Body List<Product> list);
}
 
 
    public static Retrofit connectDB(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("site")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
 
        return retrofit;
    }
 
 
 
 
   private  void checkout(){
        orderProducts apiService = DB.connectDB().create(orderProducts.class);
 
        Call<List<Product>> call = apiService.gt(list);
        call.enqueue(new Callback<List<Product>>() {
            @Override
            public void onResponse(Call<List<Product>> call, Response<List<Product>> response) {
                if (response.isSuccess()) {
                    Log.d("add basket: ", response.body().toString());
                } else {
                    Log.d("add basket: ", "no");
                    Log.d("gt", response.body().getClass().getName().toString());
                    // error response, no access to resource?
                }
 
            }

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public function orderProducts()
    {
        $connect;
       
        $input = Request::all();
        if(empty($input))
            $connect = false;
        else
            $connect = true;
        $fp = fopen("file111.txt", "w");
        $v["a"]="ttt";
         $collection = collect(Api::all());
        return $collection->toJson(JSON_UNESCAPED_UNICODE);
    }
Добавлено через 21 час 1 минуту
мммм?

Добавлено через 4 часа 33 минуты
не подскажет ли кто в чем проблема, или как правильно запрос то послать , ну или примеры

Добавлено через 5 часов 55 минут
розбираюсь уже битый час. Если так некто и незнает в чем проблема, то может подскажете еще какую библиотеку для связи клиент-сервер

Добавлено через 42 минуты
проблему решил, и да гори ты в аду проклятый слеш. Столько времени на тебя потратил.

приведу пример, что б понятно было где я упоролся

неработает, возращает нуль
Java
1
2
3
4
public interface orderProducts {
    @POST("/api/orderProducts")
    Call<List<Product>> gt(@Body Product list);
}
Работает
Java
1
2
3
4
public interface orderProducts {
    @POST("/api/orderProducts/")
    Call<List<Product>> gt(@Body Product list);
}
Добавлено через 14 часов 11 минут
Правда почему то на сервер не приходит пост запрос(

вот как проверял
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public function orderProducts()
    {
 
        $connect=false;
        $request = new Request;
        $txt = $request->all();
 
        if($request->isMethod('post'))
            $connect=true;
        $fp = fopen("file111.txt", "w");
        fwrite($fp, $txt);
 
        $v["a"]="ttt";
         $collection = collect($connect);
        return $collection->toJson(JSON_UNESCAPED_UNICODE);
    }
Добавлено через 1 минуту
зато ответ false получаю ХД))
Ответ: так и сделаю, после того как еще немного по пытаюсь розобратся сам
Вопрос: Приложение для Android, которое отправляет USSD запросы

Добрый день, форумчане)
Помогите пожалуйста, для работы необходимо написать простое приложение для Android, чтобы контролировать подрядные организации на наших объектах, суть приложения следующая:
У нашей компании есть более 600 объектов, подрядчик приезжает на объект №1 и отправляет USSD запрос *123*xxxx#, где xxxx- номер объекта №1. Тем самым он регистрируется у нас в системе и мы видим, кто в данный момент на объекте.
Главная цель приложения избавиться от необходимости набирать эти запросы вручную.
С созданием приложений для Android Я дело не имел, поэтому посоветуйте с чего начать, в каких классах копать и есть ли скелеты уже созданных приложений, чтобы хотя бы посмотреть как они реализованы?)
Надеюсь на ваши советы)
Ответ:
Сообщение от _bio
Как показывает опыт данные у нас меняться не будут, если только добавляться и то раз в год, поэтому хранить данные в БД нецелесообразно, может лучше массив? Или под андроид лучше БД?
ну если они данные у Вас статичны, то залейте все в БД, да и не парьтесь, это на порядок упрощает создание приложения, так как не нужен сервер для синхронизации данных. Приложение будет полностью в оффлайн режиме.
Сообщение от _bio
На один объект может быть 3 варианта USSD:
Прибытие
Проверка статуса
Убытие
Ребят, если есть более рациональная компоновка и вариант приложения скажите=)
ну тут необходимо более точно знать как все происходит, пользователь каждый день проделывает данную последовательность действий "приехал - перевел статус в прибытие, уехал - перевел статус в убытие" или же нет, и статусы к примеру каждый день сбрасываются...а что если он забудет выставить какой либо статус о убытии например а на следующий день выставит прибытие...может ли кто то сторонний изменить статус пользователя, если нет то статус можно запоминать локально и выводить к примеру в тулбар, что бы пользователь сразу мог видеть свой текущий статус без лишних запросов...в общем тут есть над чем подумать...
Сообщение от _bio
И такой вопрос, где все таки хранить шаблоны запросов для объектов?
где лучше хранить с точки зрения чего?
безопасности?
так то оно там всего как я понял 3 комбинации USSD, обычные строки.
Вопрос: Послать POST запрос с параметрами и получить json

Всем привет!
Столкнулся с проблемой. Как послать POST запрос и получить назад результат json.

Опишу подробно:
Есть апи сайта, на котором, чтобы получить json, нужно ввести данные в textarea и нажать кнопку submit.
При этом, в action прописан key. Без запроса с параметрами, естественно данные мне вернутся как null. Пробовал напрямую получить json, но из-за key в action и параметров получаю опять же null.

Данные в textarea вводятся таком виде:
Код HTML5
1
{"a":"2","b":{"b1":0,"b2":2,"b3":0},"c":[20,22,29,32]}
Вот и встал вопрос, как послать запрос с параметрами, чтобы они попали в textarea, и action со своим кеем прошел успешно, вернув мне json с результатом.

Заранее спасибо за помощь!

как выглядит action с кеем :
Кликните здесь для просмотра всего текста
Код PHP
1
<form action="/api/lists/?key=i1M0kS14qJnPnvZ6h2dHaEU9HQ6dBYcQNjCUn" method="post">
Ответ: если хочешь чтобы помог - кидай адрес сайта, и данные какие-нибудь тестовые