1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

[Solved] Чтение и запоминание значения из URL

Тема в разделе "Разработка плагинов для новичков", создана пользователем ql_Nik_lp, 5 дек 2012.

Статус темы:
Закрыта.
  1. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Всем доброй ночи, дорогие форумчани!
    Уже лютый час бьюсь с одной проблемой! Ситуация такова:
    Необходимо считать значение из php файла, которое в последствии использовать во нескольких классах.
    Значение получаю при помощи такого кода

    Код:
        public void readURL() throws Exception
        {
            URL oracle = new URL("http://mysite.ru/example.php?something=" + this.something);
            BufferedReader in = new BufferedReader(
            new InputStreamReader(oracle.openStream()));
     
            while ((RESULT = in.readLine()) != null)
            in.close();
     
        }
    RESULT - то самое значение которое надо использовать в дальнейшем, однако где его не спроси, оно выдает NULL

    Вопрос: Как "записать" это значение, что бы в последствии оно таким и осталось, и к нему можно было обращаться откуда угодно?

    В общем буду очень благодарен за помощь.
    Спасибо!

    ----
    Если кому интересен ответ - в лс
     
  2. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
  3. 1lyaSweeper

    1lyaSweeper Старожил Пользователь

    Баллы:
    173
    Skype:
    Iswperr
    Имя в Minecraft:
    1lyaSweeper
  4. djniktih

    djniktih Старожил Пользователь

    Баллы:
    153
    @ql_Nik_lp,
    private HttpWebResponse SentPost(string url, Dictionary<string, string> _formValues)
    {
    return SentPost(url, _formValues, new CookieContainer());
    }

    private HttpWebResponse SentPost(string url, Dictionary<string, string> _formValues, CookieContainer cookies)
    {
    // encode form data
    StringBuilder postString = new StringBuilder();
    bool first = true;
    foreach (KeyValuePair<string, string> pair in _formValues)
    {
    if (first)
    first = false;
    else
    postString.Append("&");
    postString.AppendFormat("{0}={1}", pair.Key, System.Web.HttpUtility.UrlEncode(pair.Value));
    }
    ASCIIEncoding ascii = new ASCIIEncoding();
    byte[] postBytes = ascii.GetBytes(postString.ToString());

    // set up request object
    HttpWebRequest request;
    try
    {
    request = WebRequest.Create(url) as HttpWebRequest;
    }
    catch (UriFormatException)
    {
    throw new ApplicationException("Invalid URL: " + url);
    }

    request.Method = "POST";
    request.CookieContainer = cookies;
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = postBytes.Length;

    // add post data to request
    Stream postStream = request.GetRequestStream();
    postStream.Write(postBytes, 0, postBytes.Length);
    postStream.Close();

    HttpWebResponse response = request.GetResponse() as HttpWebResponse;

    return response;

    }
     
    djavphu+mb073c, IIIeiK и Eugene1997 нравится это.
  5. Dr.Death

    Dr.Death Старожил Пользователь

    Баллы:
    153
    Skype:
    asn008
    Имя в Minecraft:
    DrDeath
    Это ж шарп
     
  6. djniktih

    djniktih Старожил Пользователь

    Баллы:
    153
    @Dr.Death, да, а что? А да чет тупанул!
     
  7. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Если это клиент майна, то можно использовать writeToNBT(NBTTagComound nbt) и readFromNBT( NBTTagComound nbt )
    Если лаунчер, то записывай в текстовый документ
     
    caNek и ql_Nik_lp нравится это.
  8. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    для начала ты написал цикл, который пока результат не станет null закрывает ридер in. то есть в итоге RESULT == null. что за бред? поэтому ничего не работает. а чтобы использовать в других местах можешь сделать public static переменную, или передавать функцией. если скрипт возвращает одну строку, то можно просто сделать ридлайн без цикла
     
  9. scobaka

    scobaka Активный участник

    Баллы:
    78
    1. Что это за зверь такой RESULT, как и где он объявлен?
    2. В какой кодировке мы получаем страничку пхп?
    3. Где проверки на ошибки и вывод их?
     
  10. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    while ((RESULT = in.readLine()) != null)
    А то что ! стоит. не?
     
  11. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    ну, дословно "читаем пока не нулл". когда стало нулл у нас выражение false и мы выходим из цикла.
     
  12. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Клиент.
    Попробовал NBT вариант, не прокатил...
    Хотя мб я что то не правильно сделал?
    В общем вот код:

    Считывание URL и запись в NBT:
    Код:
      
     
    public void readURL(NBTTagCompound par1NBTTagCompound) throws Exception
        {
            URL oracle = new URL("http://mysite.ru//example.php?something=" + this.something);
            BufferedReader in = new BufferedReader(
            new InputStreamReader(oracle.openStream()));
           
            StringBuilder responseData = new StringBuilder();
                super.writeEntityToNBT(par1NBTTagCompound);
                par1NBTTagCompound.setString("mystring", in.readLine());
                in.close();
        }
        
    Чтение из NBT:
    Код:
    public void updateCloak(NBTTagCompound par1NBTTagCompound)
        {
            super.readEntityFromNBT(par1NBTTagCompound);
            EpicString = par1NBTTagCompound.getString("mystring");
    }
    З.Ы.
    Естественно все переменные объявлены.
    Объявляю в начале файла через public static String Name;
     
  13. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    а что за значение? это значение получается при заходе в клиент? какой еще нбт в клиенте? нбт пишет в карту (в энтити) всякие данные, например содержимое печки и т.п. зачем это вам? выкинь свой цикл или сделай его нормальным и переменная будет не нулл.
     
  14. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Ну и что, что " нбт пишет в карту (в энтити) всякие данные ", это не мешает использовать его, не по назначению
     
    I-Am-Black-Overlord нравится это.
  15. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    неплохо сначала было бы узнать это самое назначение. может оно нужно в мультиплеере, тогда клиент вообще ничто никуда не запишет. темболее для нбт нужно энтитю создавать в мире.
     
  16. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    А при инициации плагина загрузить в память это самое значение религия не позволяет? И при нужности перезагружать его.
     
  17. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ну... Это не совсем плагин, в ланном случае я работаю с клиентской частью

    И да... Использоваться будет в мультиплеере
     
  18. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    да блин, его и так можно достать откуда угодно, особенно если это значение static. ты просто с циклом бред сделал.
     
    slavik123123123 нравится это.
  19. Автор темы
    ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    А как иначе ты его считаешь?
     
  20. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    если ответ одной строкой, то RESULT = in.readLine() и все.
     
Статус темы:
Закрыта.

Поделиться этой страницей