Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

ql_Nik_lp

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

Java:
    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

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

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

----
Если кому интересен ответ - в лс
 
@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;

}
 
@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;

}
Это ж шарп
 
Всем доброй ночи, дорогие форумчани!
Уже лютый час бьюсь с одной проблемой! Ситуация такова:
Необходимо считать значение из php файла, которое в последствии использовать во нескольких классах.
Значение получаю при помощи такого кода

Java:
    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

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

В общем буду очень благодарен за помощь.
Спасибо!
Если это клиент майна, то можно использовать writeToNBT(NBTTagComound nbt) и readFromNBT( NBTTagComound nbt )
Если лаунчер, то записывай в текстовый документ
 
Всем доброй ночи, дорогие форумчани!
Уже лютый час бьюсь с одной проблемой!
для начала ты написал цикл, который пока результат не станет null закрывает ридер in. то есть в итоге RESULT == null. что за бред? поэтому ничего не работает. а чтобы использовать в других местах можешь сделать public static переменную, или передавать функцией. если скрипт возвращает одну строку, то можно просто сделать ридлайн без цикла
 
1. Что это за зверь такой RESULT, как и где он объявлен?
2. В какой кодировке мы получаем страничку пхп?
3. Где проверки на ошибки и вывод их?
 
для начала ты написал цикл, который пока результат не станет null закрывает ридер in. то есть в итоге RESULT == null. что за бред? поэтому ничего не работает. а чтобы использовать в других местах можешь сделать public static переменную, или передавать функцией. если скрипт возвращает одну строку, то можно просто сделать ридлайн без цикла
while ((RESULT = in.readLine()) != null)
А то что ! стоит. не?
 
Если это клиент майна, то можно использовать writeToNBT(NBTTagComound nbt) и readFromNBT( NBTTagComound nbt )
Если лаунчер, то записывай в текстовый документ
Клиент.
Попробовал NBT вариант, не прокатил...
Хотя мб я что то не правильно сделал?
В общем вот код:

Считывание URL и запись в NBT:
Java:
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:
Java:
public void updateCloak(NBTTagCompound par1NBTTagCompound)
    {
        super.readEntityFromNBT(par1NBTTagCompound);
        EpicString = par1NBTTagCompound.getString("mystring");
}

З.Ы.
Естественно все переменные объявлены.
Объявляю в начале файла через public static String Name;
 
а что за значение? это значение получается при заходе в клиент? какой еще нбт в клиенте? нбт пишет в карту (в энтити) всякие данные, например содержимое печки и т.п. зачем это вам? выкинь свой цикл или сделай его нормальным и переменная будет не нулл.
 
Ну и что, что " нбт пишет в карту (в энтити) всякие данные ", это не мешает использовать его, не по назначению
 
Ну и что, что " нбт пишет в карту (в энтити) всякие данные ", это не мешает использовать его, не по назначению
неплохо сначала было бы узнать это самое назначение. может оно нужно в мультиплеере, тогда клиент вообще ничто никуда не запишет. темболее для нбт нужно энтитю создавать в мире.
 
А при инициации плагина загрузить в память это самое значение религия не позволяет? И при нужности перезагружать его.
 
А при инициации плагина загрузить в память это самое значение религия не позволяет? И при нужности перезагружать его.
Ну... Это не совсем плагин, в ланном случае я работаю с клиентской частью

И да... Использоваться будет в мультиплеере
 
Ну... Это не совсем плагин, в ланном случае я работаю с клиентской частью

И да... Использоваться будет в мультиплеере
да блин, его и так можно достать откуда угодно, особенно если это значение static. ты просто с циклом бред сделал.
 
если ответ одной строкой, то RESULT = in.readLine() и все.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх