Flutter中Dio动态设置Http代理IP和端口

Flutter中Dio动态设置Http代理IP和端口,第1张

这问题,一开始就有。因为忙着忙着也没管。后来发现还是很有需要灵活修改代理ip和端口号的。所以得处理一波了。

因为本身做Android出身,就草船借鉴了下Android里的设置点个8下,进入开发者模式的套路。看到这,系不系心如明镜般?哈哈~ 摸着Android过河也是可以的。

解决方案有了:

我们设置了20次,点点点吧,减小误触几率。

这个Http代理填写IP和端口号的页面,可以新开一个,就是两个输入框,点Submit后,重置Dio实例,并把代理设置给HttpClient。

这里需要注意的是,如果你这里重置了client.findProxy,那么一定要重新实例化Dio实例,不然不生效。这一点也可以在源码中得到印证.

^_^,这就搞完了。还挺简单的。但是确实解决了很大的问题,也很灵活。大家自行拿去试试吧。

使用代理需要导入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。

在连接代理时需要使用用户名和密码构造UsernamePasswordCredentials对象并作为参数传递给HttpClient对象。

具体用法如下:

public static void main(String args[])

{

 StringBuffer sb = new StringBuffer()

 //创建HttpClient实例

 HttpClient client = getHttpClient()

 //创建httpGet

 HttpGet httpGet = new HttpGet("http://www.csdn.net")

 //执行

 try {

  HttpResponse response = client.execute(httpGet)

  

  HttpEntity entry = response.getEntity()

  

  if(entry != null)

  {

   InputStreamReader is = new InputStreamReader(entry.getContent())

   BufferedReader br = new BufferedReader(is)

   String str = null

   while((str = br.readLine()) != null)

   {

    sb.append(str.trim())

   }

   br.close()

  }

  

 } catch (ClientProtocolException e) {

  // TODO Auto-generated catch block

  e.printStackTrace()

 } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace()

 }

 System.out.println(sb.toString())

}

//设置代理

public static HttpClient getHttpClient() {

 DefaultHttpClient httpClient = new DefaultHttpClient()

 String proxyHost = "proxycn2.huawei.com"

 int proxyPort = 8080

 String userName = "china\\******"

 String password = "*******“

 httpClient.getCredentialsProvider().setCredentials(

   new AuthScope(proxyHost, proxyPort),

   new UsernamePasswordCredentials(userName, password))

 HttpHost proxy = new HttpHost(proxyHost,proxyPort)

 httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy)

 return httpClient

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6366789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存