<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "//www.w3.org/TR/html4/strict.dtd">
<HTML style="overflow:auto;">
<HEAD>
<meta name="generator" content="JDiff v1.1.0">
<!-- Generated by the JDiff Javadoc doclet -->
<!-- (http://www.jdiff.org) -->
<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
<TITLE>
org.apache.http.conn.params.ConnPerRouteBean
</TITLE>
<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
<noscript>
<style type="text/css">
body{overflow:auto;}
#body-content{position:relative; top:0;}
#doc-content{overflow:visible;border-left:3px solid #666;}
#side-nav{padding:0;}
#side-nav .toggle-list ul {display:block;}
#resize-packages-nav{border-bottom:3px solid #666;}
</style>
</noscript>
<style type="text/css">
</style>
</HEAD>
<BODY>
<!-- Start of nav bar -->
<a name="top"></a>
<div id="header" style="margin-bottom:0;padding-bottom:0;">
<div id="headerLeft">
<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
</div>
  <div id="headerRight">
  <div id="headerLinks">
<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
<span class="text">
<!-- &nbsp;<a href="#">English</a> | -->
<nobr><a href="//developer.android.com" target="_top">Android Developers</a> | <a href="//www.android.com" target="_top">Android.com</a></nobr>
</span>
</div>
  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
    <table class="diffspectable">
      <tr>
        <td colspan="2" class="diffspechead">API Diff Specification</td>
      </tr>
      <tr>
        <td class="diffspec" style="padding-top:.25em">To Level:</td>
        <td class="diffvaluenew" style="padding-top:.25em">22</td>
      </tr>
      <tr>
        <td class="diffspec">From Level:</td>
        <td class="diffvalueold">21</td>
      </tr>
      <tr>
        <td class="diffspec">Generated</td>
        <td class="diffvalue">2015.02.19 13:16</td>
      </tr>
    </table>
    </div><!-- End and-diff-id -->
  <div class="and-diff-id" style="margin-right:8px;">
    <table class="diffspectable">
      <tr>
        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
      </tr>
    </table>
  </div> <!-- End and-diff-id -->
  </div> <!-- End headerRight -->
  </div> <!-- End header -->
<div id="body-content" xstyle="padding:12px;padding-right:18px;">
<div id="doc-content" style="position:relative;">
<div id="mainBodyFluid">
<H2>
Class org.apache.http.conn.params.<A HREF="../../../../reference/org/apache/http/conn/params/ConnPerRouteBean.html" target="_top"><font size="+2"><code>ConnPerRouteBean</code></font></A>
</H2>
<p><b>Now deprecated</b>.<br>
<a NAME="constructors"></a>
<a NAME="methods"></a>
<a NAME="fields"></a>
      </div>	
      <div id="footer">
        <div id="copyright">
        Except as noted, this content is licensed under 
        <a href="//creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
        For details and restrictions, see the <a href="/license.html">Content License</a>.
        </div>
      <div id="footerlinks">
      <p>
        <a href="//www.android.com/terms.html">Site Terms of Service</a> -
        <a href="//www.android.com/privacy.html">Privacy Policy</a> -
        <a href="//www.android.com/branding.html">Brand Guidelines</a>
      </p>
    </div>
    </div> <!-- end footer -->
    </div><!-- end doc-content -->
    </div> <!-- end body-content --> 
<script src="//www.google-analytics.com/ga.js" type="text/javascript">
</script>
<script type="text/javascript">
  try {
    var pageTracker = _gat._getTracker("UA-5831155-1");
    pageTracker._setAllowAnchor(true);
    pageTracker._initData();
    pageTracker._trackPageview();
  } catch(e) {}
</script>
</BODY>
</HTML>
