发布到url并在输出时运行可调用的Java方法
我编写了一个简单的方法将数据发布到URL并使用输出。我尝试了多种方法来消耗输出,但尚未成功:发布到url并在输出时运行可调用的Java方法,java,android,callable,Java,Android,Callable,我编写了一个简单的方法将数据发布到URL并使用输出。我尝试了多种方法来消耗输出,但尚未成功: public void postToUrl(final String theurl, final String query, final Callable<Void> myMethod){ String urlData=""; new Thread(new Runnable() { @Override publi
public void postToUrl(final String theurl, final String query, final Callable<Void> myMethod){
String urlData="";
new Thread(new Runnable() {
@Override
public void run() {
try {
String urlData="";
String url=baseurl+ theurl + "/?" +query;
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.connect();
InputStream response = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(response));
String line="";
while ((line = reader.readLine()) != null) {
urlData += line;
}
reader.close();
// How to consume urlData here?
// myMethod.call(); not accepts parameter
try {
myMethod.call(urlData);
}catch (Exception e){
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}}
).start();
}
public void postToUrl(最终字符串theurl、最终字符串查询、最终可调用myMethod){
字符串urlData=“”;
新线程(newrunnable()){
@凌驾
公开募捐{
试一试{
字符串urlData=“”;
字符串url=baseurl+theurl+“/?”+查询;
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
URLConnection connection=新URL(URL).openConnection();
connection.setDoOutput(真);
connection.connect();
InputStream响应=connection.getInputStream();
BufferedReader reader=新的BufferedReader(新的InputStreamReader(响应));
字符串行=”;
而((line=reader.readLine())!=null){
urlData+=行;
}
reader.close();
//如何在这里使用urlData?
//myMethod.call();不接受参数
试一试{
调用(urlData);
}捕获(例外e){
e、 printStackTrace();
}
}捕获(格式错误){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}}
).start();
}
如果此方法不是调用和使用url的正确方法,那么如何管理应用程序中的多个客户机-服务器请求?您是否为每种类型的请求重写上述代码?您真的为每个客户端服务器交互定义了一个新类或新接口吗?使用
AsyncTask
并在onPostExecute
中使用它有什么不对?StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(策略)代码>羞耻o羞耻。尝试使用第三方库,比如改型。我在逻辑上有相同的困惑,那就是如何将onPostExecute
分配给不同的方法?您是否使用自己的onPostExecute
为每个具有不同用途的新url请求编写了一个新类?@HB。您应该使用改装
库来处理http请求,并避免在Android中使用线程
类