Android XcapClinet 二

Android XcapClinet 二、android客户端编写

转载注明出处:http://blog.csdn.net/gremorse/article/details/11737143

需要借助工具:wireshark

过滤http

以put方法为例,使用Xcapclient测试put方法时抓包得到的结果是

xcapclient                              openxcap

       |                 PUT                     \ |

       |/                 401                       |

       |                 PUT                     \ |

       |/                 200                       |

过程很迂回,出现的关键字字眼为WWW-Authenticate,参照RFC2617

public static String sendPut(String url, Map<String, String> headers,
			String entityString, String sipName, String sipPwd)
			throws ClientProtocolException, IOException,
			MalformedChallengeException, AuthenticationException {
		DefaultHttpClient httpClient = (DefaultHttpClient) getHttpClient();
		HttpPut httpPut = new HttpPut(url);
		String response = "";
		if (headers != null) {
			httpPut.setHeaders(convertHead(headers));
		}
		if (entityString != null)
			httpPut.setEntity(new StringEntity(entityString));
		HttpResponse httpResponse = httpClient.execute(httpPut);
		if (httpResponse.getStatusLine().getStatusCode() == 401) {
			DigestScheme md5Auth = new DigestScheme();
			// 提取鉴权元素
			Header challenge = httpResponse.getHeaders("WWW-Authenticate")[0];
			md5Auth.processChallenge(challenge);
			Header solution = md5Auth.authenticate(
					new UsernamePasswordCredentials(sipName, sipPwd),
					new BasicHttpRequest(HttpPut.METHOD_NAME, new URL(url)
							.getPath()));
			Map<String, String> tempHeaders = new HashMap<String, String>();
			tempHeaders = headers;
			tempHeaders.put(solution.getName(), solution.getValue());
			response = sendPut(url, tempHeaders, entityString, sipName, sipPwd);
		} else {
			response += httpResponse.getStatusLine() + "\r\n";
			for (Header tempHeader : httpResponse.getAllHeaders()) {
				response += tempHeader.getName() + ":";
				response += tempHeader.getValue() + "\r\n";
			}
			response += EntityUtils.toString(httpResponse.getEntity());
		}
		httpPut.abort();
		return response;
	}
主要还是在
if (httpResponse.getStatusLine().getStatusCode() == 401)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值