2016-10-05 1 views
1

Я изучаю okhttp, и я хочу сделать тест с локальным json-файлом на моем компьютере или Android-устройстве. Но я не знаю, как получить доступ к локальному файлу в качестве строки url для вызова функции. Как это:Как сделать локальный тест с okhttp

File sdcard = Environment.getExternalStorageDirectory(); 
File testJson = new File(sdcard, "test.json"); 
HttpUtils.HttpGet(testJson., mCallback); 

public class HttpUtils { 
    private static final String TAG = "HttpUtils"; 

    private static final OkHttpClient mClient = new OkHttpClient(); 

    public static void HttpGet(String url, Callback callback) { 
     //创建一个Request 
     final Request request = new Request.Builder() 
       .url(url) 
       .build(); 
     //创建一个Call 
     Call call = mClient.newCall(request); 
     //请求加入调度 
     call.enqueue(callback); 
    } 
} 
+0

Строка URL = "файл: //" + testJson.getAbsoluthePath() ;. Но я думаю, что okhttp не будет соблюдать вашу попытку. – greenapps

+1

Если вы хотите выполнить локальные тесты, установите локальный веб-сервер, например NanoHttpD, чтобы обслуживать ваши файлы. В игровом магазине есть такие веб-серверы. – greenapps

+0

@greenapps В чем разница между NanoHttpD и MockWebServer? –

ответ

2

Вы можете использовать MockWebServer для обслуживания загружаемого вами содержимого из файла.

https://github.com/square/okhttp/tree/master/mockwebserver

MockWebServer server = new MockWebServer(); 

    // Schedule some responses. 
    server.enqueue(new MockResponse().setBody("hello, world!")); 
    server.enqueue(new MockResponse().setBody("sup, bra?")); 
    server.enqueue(new MockResponse().setBody("yo dog")); 

    // Start the server. 
    server.start(); 

    // Ask the server for its URL. You'll need this to make HTTP requests. 
    HttpUrl baseUrl = server.url("/v1/chat/"); 
0

Ну, вы должны абстрактному клиент вашего HTTP некоторого интерфейс и создать два реализации - один с использованием OkHTTP, а другие - просто чтение файла.