In android i am creating thread for url connection.Inside the thread i store the response message in a string which is globally declared.When I access the method method it returns null.
public class Rate_fetch {
String total="";
public String rate(String dt)
{
new Thread(new Runnable(){
public void run(){
try {
URL url = new URL(tally_ipaddr+"/prorate.jsp?plist="+sss.toString().trim());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader r = new BufferedReader(new InputStreamReader(in));
String x = "";
String total = "";
x = r.readLine();
int i=0;
while(x.length()>1)
{
total=total+x.toString().trim();
i++;
x = r.readLine();
}
}
catch(Exception e){
return e.toString();
}
}
}).start();
return total;
}
When i call the method it returns null.
Rate_fetch rf=new Rate_fetch();
String amt= rf.rate(prodList);
解决方案
It you really want to use Thread only, try this
public class Rate_fetch {
String total = "";
boolean b = true;
public String rate(String dt) {
StringBuilder sb = new StringBuilder();
new Thread(new Runnable() {
public void run() {
try {
URL url = new URL(tally_ipaddr + "/prorate.jsp?plist="
+ sss.toString().trim());
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
InputStream in = new BufferedInputStream(urlConnection
.getInputStream());
BufferedReader r = new BufferedReader(
new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String s;
while (true) {
s = r.readLine();
if (s == null || s.length() == 0)
break;
sb.append(s);
}
b = true;
} catch (Exception e) {
b = true;
}
}
}).start();
while (b) {
}
total = sb.toString();
return sb.toString();
}
}