原理
將Http請求中追加XDEBUG_SESSION
字段,激活php的xdebug功能。
php.ini
xdebug.remote_autostart = 1 # 重要
xdebug.remote_enable = On
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = "d:/work/wamp64/logs/xdebug-profiler.log"
xdebug.profiler_output_dir ="d:/work/wamp64/tmp"
xdebug.show_local_vars=0
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001
;xdebug.remote_log="d:/work/wamp64/logs/xdebug.log"
xdebug.default_enable = "Off"
xdebug.remote_handler = "dbgp"
xdebug.idekey = PHPSTORM # 記住這個名字
xdebug.coverage_enable=0
OkHttp
import android.text.TextUtils;
import java.io.IOException;
import java.net.URLEncoder;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
public class CookieInterceptor implements Interceptor {
private UserStorage mUserStorage;
public CookieInterceptor(UserStorage mUserStorage) {
this.mUserStorage = mUserStorage;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
Request request = original.newBuilder()
.addHeader("Cookie", "u=" + URLEncoder.encode(mUserStorage.getCookie()) + ";XDEBUG_SESSION=PHPSTORM") # 這個名字與上面的配置文件中的保持一致
.build();
return chain.proceed(request);
}
}
WebView中
// 設置xdebug cookies
CookieManager.getInstance().setAcceptCookie(true);
CookieManager.getInstance().setCookie(Constants.Base_URL, "XDEBUG_SESSION=PHPSTORM");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(wv_web, true);
CookieManager.getInstance().flush();
} else {
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().sync();
}