0

它总是给我登录页面作为响应,因为它没有看到我已登录。这是我的 POST 方法的代码(我在登录和其他 Web 服务上都调用它):

protected WebEntity sendPOST(WebServiceTask.InputParam param) throws Exception {
    WebEntity result = null;
    httppost = new HttpPost(param.url);

    if ((param.nameValuePairs != null) && !param.nameValuePairs.isEmpty()) {
        httppost.setEntity(new UrlEncodedFormEntity(param.nameValuePairs, "UTF-8"));
        LogService.log("sendPOST", "======params========" + param.nameValuePairs);
    }
    System.out.println("----blabla_session : "+blabla_session);
    if (blabla_session != null) {
        CookieStore cookieStore = httpclient.getCookieStore();
        BasicClientCookie cookie = new BasicClientCookie("blabla_session", blabla_session);
        cookie.setDomain("http://blbla.kz");
        cookieStore.addCookie(cookie);
        httpclient.setCookieStore(cookieStore);
        httppost.setHeader("Set-Cookie", blabla_session);


    }
    LogService.log("WEB-SERVER-CLIENT POST : ", httppost.getURI().toString());
    HttpResponse response = httpclient.execute(httppost);

    if (response.getStatusLine().getStatusCode() >= 400) {
        String maybeThereIsSomeExtraMessageInBody = "";
        try {
            maybeThereIsSomeExtraMessageInBody = (String) getResponseStream(response, response.getEntity(), String.class);
        } catch (Exception e) {
            e.printStackTrace();
            // DO NOTHING
        }
        return new WebEntity(response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase() + "\n" + maybeThereIsSomeExtraMessageInBody);
    }
    Header cp = response.getFirstHeader("Set-Cookie");
    if(cp!=null){
        HeaderElement[] he = cp.getElements();
        for (int i = 0; i < he.length; i++) {
            if(he[i].getName().equalsIgnoreCase("blabla_session")){
                blabla_session = he[i].getValue();
                break;
            }
        }
    }
    HttpEntity responseEntity = response.getEntity();
    if (responseEntity != null) {
        if (result != null) {
            result.success = true;
        } else {
            result = new WebEntity(false);
        }
    }
    return result;
}

现在我做的第一个WS调用,是Login WS,此时blabla_session为null,所以那部分代码,没有发起。从第二个 WS 调用开始,blabla_session(它是静态的)是使用我从会话中获得的必要 session_code 启动的。这就是为什么它进入代码的 (blabla_session != null) 部分,它应该在其中创建 cookie,并与 WS 调用一起发送

这是他们用于 WebService 的代码,我称之为:

r = requests.post('http://blabla.kz/api/login/',data={'username':'USERNAME','password':'123'})
rr = requests.get('http://blabla.kz/api/validate_coupon/bsdfsdfsd/', cookies=r.cookies)
rr.text
4

1 回答 1

0

当我调用 web 服务调用时,我有一个不应该存在的参数,在 nameValuePairs 中,这就是它崩溃的原因

于 2012-12-20T09:17:08.100 回答