2017-10-05 60 views
1

我有一個方法,我用它發送我的所有請求到服務器。 而在這個方法中,我使用的是Builder類。 我只想知道如何根據函數的輸入通過「if」在每個請求中指定Builder的函數類型。 這裏是我的功能:如何選擇我要在Builder類中使用的函數的類型?

public String sendHttpRequest(String url, String parameters,String type) { 

    try { 
     OkHttpClient client = new OkHttpClient(); 

     MediaType mediaType = MediaType.parse("application/json"); 
     RequestBody body = RequestBody.create(mediaType, parameters); 
     Request request = new Request.Builder() 

       .url(url) 

       /*what I'm going to do is somthing like this: 

       if(type.equal("get")){ 
       .get() 
       } 
       if(type.equal("post")){ 
       .post() 
       } 
       */ 
       .addHeader("content-type", "application/json") 
       .addHeader("cache-control", "no-cache") 

     Response response = client.newCall(request).execute(); 
     return response.body().string().toString(); 

    } catch (IOException ex) { 
    } 
    return ""; 
} 

所以,我應該怎麼辦?

回答

2

您可以通過鏈接或單獨使用構建器。

你可以嘗試這樣的事情:

Request.Builder builder = new Request.Builder() 
     .url(url) 
     .addHeader("content-type", "application/json") 
     .addHeader("cache-control", "no-cache"); 
if(type.equals("get")){ 
    builder.get(); 
} else if(type.equals("post")){ 
    builder.post(/*body*/); 
} 
Request request = builder.build(); 

Response response = client.newCall(request).execute(); 
+0

這是偉大的!謝謝Nabin :) –

1

我不知道這個OkHttp庫,但因爲它是一個構建器,我想你可以在調用build()方法之前創建它。例如:

Request.Builder builder = new Request.Builder(); 
builder.url(url) 
if(type.equal("get")){ 
    builder.get(); 
} 
if(type.equal("post")){ 
    builder.post(); 
} 
builder.addHeader("content-type", "application/json"); 
builder.addHeader("cache-control", "no-cache"); 

Request request = builder.build(); 
Response response = client.newCall(request).execute(); 
相關問題