#android #vkontakte_api
Есть запрос
String s = "qwerty";
VKParameters p = new VKParameters();
p.put(VKApiConst.OWNER_ID,-119852848);
p.put(VKApiConst.POST_ID,4);
p.put(VKApiConst.TEXT,s);
p.put(VKApiConst.SORT,"desc");
p.put(VKApiConst.COUNT,20);
VKRequest r = VKApi.wall().addComment(p);
Приходит ошибка 100, что не передан параметр text
но, если сделать так
p.put(VKApiConst.TEXT,"qwerty");
коментарий успешно добавляется.
Почему просто текст в кавычках добавляется, а String переменная нет?
Ответы
Ответ 1
Не имеет ни какой разницы, что вы выполните: p.put(VKApiConst.TEXT, s); Что вы выполните: p.put(VKApiConst.TEXT, "qwerty"); В VKsdk VKParameters = Map. По сути, что ввести хардкод "qwerty" , что String s = "qwerty" в памяти это объект типа String. Ищите ошибку в коде. Ответ 2
Создал минимальное тестовое приложение с авторизацией и кнопкой отправления комментария - все работает. Также хочу заметить, что для метода addComment не требуются параметры sort и count. public class MainActivity extends AppCompatActivity { private static final String TAG = "VKApiDemo"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); VKSdk.login(this, VKScope.WALL); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String s = "qwerty"; VKParameters p = new VKParameters(); p.put(VKApiConst.OWNER_ID, -42536065); p.put(VKApiConst.POST_ID, 2454); p.put("text", "some text from app"); // p.put(VKApiConst.SORT, "desc"); // p.put(VKApiConst.COUNT, 20); VKRequest r = VKApi.wall().addComment(p); r.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); Log.e(TAG, "onComplete: response is" + response.json.toString()); } @Override public void onError(VKError error) { super.onError(error); Log.e(TAG, "onError: " + error.toString()); } }); } }); } } Используемая версия библиотеки vk sdk android: com.vk:androidsdk:1.6.7Ответ 3
Не вижу TEXT в списке полей VKApiConst. Предлагаю попробовать p.put(VKApiConst.MESSAGE,s);Ответ 4
Попробуйте вот так p.put(VKApiConst.TEXT,""+s); либо поэкспериментируйте с кодировкой как-то так // Данные в кодировке КОИ-8 byte[] koi8Data = ...; // Преобразуем из КОИ-8 в Unicode String string = new String(koi8Data,"KOI8_R"); // Преобразуем из Unicode в Windows-1251 byte[] winData = string.getBytes("Cp1251");Ответ 5
Все верно, вам и будет приходить ошибка 100 т.к. вы используете объект. s.toString() используйте или String.valueOf(s);
Комментариев нет:
Отправить комментарий