如何在泽西网络服务中检索名称值对

时间:2013-11-18 04:28:36

标签: android web-services

我在android

中使用以下代码
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);

nameValuePairs.add(new BasicNameValuePair("results", data));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

httpResponse= httpClient.execute(httpPost);
httpEntity = httpResponse.getEntity();

我在我的应用程序中使用以下代码从webservice接收数据。

@POST
@Path("/saveResponseData/")
@Produces(MediaType.APPLICATION_JSON)
public String saveSurveyResponseData(@QueryParam("results") String responseData)
{
    ...................
}

但是我在这里得到responseData为null。如何在服务器端获取该数据。

提前致谢...

3 个答案:

答案 0 :(得分:0)

尝试像这样编码。 您应该首先检查错误的响应。

if(httpResponse!=null)
{
    int statusCode=httpResponse.getStatusLine().getStatusCode();
    if(statusCode>=200&&statusCode<=300)
    {
        //ok response
        // fecth the data from
        HttpEntity entity=  httpResponse.getEntity();
        if(entity!=null)
        {
            // fetch data from 
             String responseBody;
            try {
                responseBody = EntityUtils.toString(entity);
                System.out.println("finalResult"+responseBody.toString());

                //parse your data here

            } catch (org.apache.http.ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }
    else
    {
        // printing the response from server/ what error code occor 
        Log.e("Response from server", httpResponse.getStatusLine().getReasonPhrase());
    }
}
祝你好运:)

答案 1 :(得分:0)

在使用@POST时,请尝试使用@FormParam注释而不是@QueryParam

@POST
@Path("/saveResponseData/")
@Produces(MediaType.APPLICATION_JSON)
public String saveSurveyResponseData(@FormParam("results") String responseData)
{
    ...................
}

希望它有所帮助。

答案 2 :(得分:0)

如果您在服务器端通过POST收到请求,请尝试使用@Consumes(“application / x-www-form-urlencoded”)而不使用@QueryParam(“results”),如下所示:

@POST
@Path("/saveResponseData/")
@Consumes("application/x-www-form-urlencoded")
public String saveSurveyResponseData(String responseData)
{
    ...................
}

您的respondeData应该类似于“results = data”,将其视为字符串。

希望这能回答你的问题。