我试图将帖子请求发送到webservice .. 当我在参数中添加特殊字符@时,它被转换为%40.i已检查服务器端..他们正在获得%40而不是@。 谁能帮我?? 这是我的代码..
httpclient = new DefaultHttpClient();
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Email", "abc@gmail.com"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = httpclient.execute(httppost,responseHandler);
我也尝试过这种方法来阻止我的参数编码。
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.PLAIN_TEXT_TYPE));
但它引发了不受支持的编码算法
请帮我解决这个问题。
答案 0 :(得分:6)
您正在使用UrlEncodedFormEntity
,这将URL-encode内容。使用此编码将@
转换为%40
是正常的。收件人应该能够自动解码,尽管您可能必须使用正确的内容类型,可能application/x-www-form-urlencoded
。
答案 1 :(得分:2)
您需要在服务器端使用URLDecoder之类的内容,以便将%40
转换回@
。这同样适用于其他特殊字符。
答案 2 :(得分:2)
使用URLDecoder.decode(url)
这会有所帮助。
答案 3 :(得分:1)
您可以使用
package com.xx4everPixelatedxx.gaterunner.sprites;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector3;
import com.xx4everPixelatedxx.gaterunner.GateRunner;
import javax.xml.soap.Text;
/**
* Created by Michael Jan on 8/17/2015.
*/
public class GameIcon extends Sprite {
private int vX = 3;
private int vY = 3;
private int r = 9;
private int rotation;
private Vector3 position;
private Texture texture;
public GameIcon(int x, int y) {
position = new Vector3(x, y, 0);
texture = new Texture(Gdx.files.internal("icon_players/icon1.png"));
setTexture(texture);
}
public void update() {
position.add(vX, vY, 0);
rotation = rotation + r;
rotation = rotation % 360;
setRotation(rotation);
setOriginCenter();
}
public void addPosition(int x, int y) {
position.add(x, y, 0);
setOriginCenter();
}
public void negateVelocityX() {
vX = -vX;
}
public void negateRotation() {
r = -r;
}
public Vector3 getPosition() {
return position;
}
public int getvY() {
return vY;
}
public void setvY(int vY) {
this.vY = vY;
}
public int getvX() {
return vX;
}
public void setvX(int vX) {
this.vX = vX;
}
}
从您传递的网址中删除任何特殊字符
答案 4 :(得分:0)
我参加这个聚会肯定很晚,但是我遇到了类似的问题。如果要解码url字符串,则需要使用encodeURIComponent( url )。其中 url 是您要解码的字符串。
W3schools在解释它方面做得很好。 https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_decodeuricomponent